Несколько проверок в FineUploader - PullRequest
0 голосов
/ 22 октября 2018

Я использую FineUploader в своем приложении React для загрузки файлов в хранилище BLOB-объектов Azure.В настоящее время я использую проверку, чтобы убедиться, что пользователь может загрузить только один файл.Теперь я хочу добавить еще две проверки:

  1. Я хочу разрешить только JPG и PNG файлы
  2. Я также хочу убедиться, что размер файла в пикселяхПользователь может загрузить не менее 300х300 пикселей.Другими словами, я хочу наложить требования как к ширине, так и к высоте

Как мне добавить эти проверки?Нужно ли проверять свойство внутри options для каждого требования или оно входит в существующее?Моя текущая проверка выглядит так:

// Omitted for brevity
constructor(props) {

   super(props);
   this.uploader = new FineUploaderAzure({
            options: {
                cors: {
                    expected: true,
                    sendCredentials: false
                },
                signature: {
                    endpoint: "some-url.com"
                },
                request: {
                    endpoint: "my-container-url"
                },
                validation: {
                    multiple: false
                }
            },
            callbacks: {
                onError: function (id, name, errorReason, xhrOrXdr) {

                }
            }
        })
}

1 Ответ

0 голосов
/ 26 октября 2018

Предположим, что ответная реакция / тонкая загрузка не изменяются; Документация , вы должны сделать это следующим образом.

options: {
  multiple: false,
  cors: {
    expected: true,
    sendCredentials: false
  },
  signature: {
    endpoint: "some-url.com"
  },
  request: {
    endpoint: "my-container-url"
  },
  validation: {
    allowedExtensions: ['jpeg', 'jpg', 'png'],
    image:{
      minHeight: 300,
      minWidth: 300
    }
  }
}

PS.Я не использовал Fineuploader в реакции, поэтому, пожалуйста, посмотрите, работает ли он также в реакции.


Ответ на обновление

В случае, если вы хотитеиметь свою собственную проверку, в первую очередь вы не должны использовать onError.onError вызывается тогда и только тогда, когда происходит error.Вы проверяете размер изображения, хотя оно не соответствует вашим критериям, это НЕ error.

Тогда у вас есть два варианта проверки, это зависит от того, какой эффект вы хотите.Для начала вам нужно узнать ход событий.Это:

onSubmit -> проверка -> onValidate

Работу (проверка изображения или нет), которую вы, скорее всего, хотите, можно выполнить на обоихтри места.

Если вы хотите, чтобы это было в проверке, то ответ, который я предоставил, уже сделал это (allowedExtensions: ['jpeg', 'jpg', 'png']).Но допустим, что вы хотите настроить оповещение или другую проверку, вам нужно сделать это в onValidate.

callbacks:{
  onValidate: function(data, button_container) {
    console.log(data); //data.name && data.size
    return false;
  }
}

Но, пожалуйста, напомним, что в onValidate вы можете получить только файл назадимя и размер файла, никакой другой информации.

Если вы также хотите проверить ширину и высоту, вам, вероятно, нужно взглянуть на этот ТАК вопрос (если вы ответите ОП,найдите это то, что вы хотите.)

...