Могу ли я указать тип файла в GWT FileUpload? - PullRequest
1 голос
/ 21 марта 2011

У меня есть приложение Gwt и я использую FileUpload, чтобы позволить пользователям загружать файлы.Будут приняты только определенные типы файлов, и у меня есть проверка, чтобы проверить типы файлов после того, как пользователь выбрал его для загрузки, но я хочу знать, есть ли способ показать файлы только с определенными расширениями в диалоговом окне загрузки.

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

Ответы [ 4 ]

7 голосов
/ 24 декабря 2014

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

myFileUpload.getElement().setAttribute("accept", ".txt");

По крайней мере, это сработало для меня в учебном проекте . 'accept' имеет других форматов тоже.

3 голосов
/ 21 марта 2011

Самое близкое, что я могу придумать, - это использовать

<input type="file" accept="image/jpg,image/gif">

вместе с:

<form action="pat/to/action" enctype="multipart/form-data" method="post">

, хотя он не проверяет и не вносит какие-либо изменения в сам диалог открытия файла.,Лучшим вариантом будет позволить пользователю выбрать любой файл, а когда onClick() использовать функцию javascript для проверки расширения, и аккуратную маленькую квадратную область под элементом управления загрузкой файла, которая дает пользователю обратную связь о достоверности выбранного файла.

2 голосов
/ 21 марта 2011

Насколько мне известно

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

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

0 голосов
/ 17 мая 2016

Вы можете создать разделенную запятыми строку типов MIME, которую вы хотите поддерживать (ниже - для xls, xlsx и т. Д.)

String mimeList = "application/vnd.ms-excel,application/msexcel,application/"
        + "x-msexcel,application/x-ms-excel,application/vnd.ms-excel,application/"
        + "x-excel,application/x-dos_ms_excel,application/xls,application/"
        + "vnd.openxmlformats-officedocument.spreadsheetml.sheet";

myFileUploader.setAcceptedTypes(mimeList);

Обратите внимание, что нет гарантии, что это будет работать ввсе браузеры.

Я тестировал только с Google Chrome, и он работает!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...