Отправка файла на сервер FileUploader

Контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.

Синхронная и асинхронная отправка

Контрол может работать в двух режимах: синхронном – отправляет файлы на сервер вместе с данными формы по сабмиту и асинхронном – отправляет файлы на сервер сразу после их выбора и позволяет сразу отобразить прогресс. В каждом из этих режимов можно включить мультивыбор — когда контрол позволит выбрать и отобразит сразу несколько файлов.

Синхронная отправка

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

Когда мультивыбор отключен, можно выбрать только один файл. Клик в ссылку открывает диалог выбора нового файла взамен выбранного. Клик на крестик отменяет выбор и сбрасывает контрол. Так же можно перетащить новый файл в зону драг-н-дропа — выбранный ранее файл заменится новым.

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

Если есть такая возможность, выводите дополнительную информацию о выбранных файлах, превью картинки, иконку типа файла и его размер:

Пример заполненной формы с таким полем:

Асинхронная отправка

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

В любой момент можно прервать и отменить отправку. При наведении на строку появляется крестик для отмены и удаления файла. При клике на крестик контрол возвращается в исходное состояние, отправка прекращается, если она завершилась — файл удаляется.

Если файл успешно отправлен спиннер меняется на галку:

В режиме мультивыбора контрол выбора всегда дублируется в конце списка:

Если есть возможность отображать прогресс отправки файла, можно заменить спиннеры на прогресс-ринг:

Или прогресс-бар:

Отображение ошибок

При ошибках, которые относятся к конкретным файлам название файла подсвечивается красным, при наведении или фокусе на строку появляется тултип с текстом ошибки. Например, сервер вернул ошибку:

Если нужны файлы определенного формата ограничьте их на этапе выбора — это лучше чем показать ошибку после выбора. Если это невозможно — помечайте неправильный файл:

При общих ошибках, которые не могут быть отнесены к определенному файлу красным подсвечивается контрол выбора — появляется красная обводка как у полей с ошибкой. Например, когда превышен объем файлов:

Если есть ограничения по размеру и формату файлов, обозначайте сразу в виде комментария под контролом. При достижении лимита по количеству файлов — блокируйте контрол, не давая пользователю совершать лишнее действие, которое приведёт к ошибке. Предупредите пользователя об ограничениях — это сделает интерфейс дружелюбнее.

Дизайн

Состояние по умолчанию:

Наведение на контрол:

Вид при перетаскивании файлов:

Файл выбран:

Если имя файла не входит, скрываются символы в центре, а при наведении на контрол появлется хинт с полным именем:

В асинхронном варианте скрытие символов работает так же:

Фокус с клавиатуры:

Фокус с клавиатуры на списке выбранных файлов: