Тип файла в форме загрузки HTML - PullRequest
2 голосов
/ 02 июля 2010

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

<input name="image" type="file" />

И есть ли какой-либо метод javascript для отображения прогресса?

Ответы [ 5 ]

3 голосов
/ 02 июля 2010

Во входном теге есть атрибут accept, но он поддерживается не всеми браузерами. Вот пример:

<input type="file" name="image" id="image" accept="image/jpeg" />

Это может быть ваша первая проверка, но ваша основная проверка должна быть на сервере при принятии файла.

2 голосов
/ 02 июля 2010

Как я могу ограничить свою форму, чтобы принимать только файлы JPEG

В основном, вы не можете. Вы должны проверить на сервере (что вам нужно сделать в любом случае , даже если вы можете проверить на клиенте; вы можете никогда доверять проверке на стороне клиента, всего). Но все налаживается. Появился новый Файловый API от W3C , который вы можете использовать в браузерах, которые его поддерживают (в основном Firefox, на данный момент; это была инициатива Mozilla), просто для лучшего пользовательский опыт для тех, кто с современными браузерами.

Редактировать И Герт Г указывает , что вот атрибут accept , который может дать подсказку браузеру, что хорошо для браузеров, которые поддерживают это.

И есть ли какой-нибудь метод javascript для отображения прогресса?

Не напрямую, нет. Иногда возможно показать прогресс косвенно, используя синхронизированные серии ajax-запросов наряду с загрузкой и заставляя сервер сообщать вам, сколько он получил до сих пор, но это чревато трудностями и, вероятно, не стоит беспокоиться.

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

Конечно, есть Flash-загрузчики, такие как SWFUpload , которые показывают прогресс и тому подобное, если вы хотите использовать что-то проприетарное (но невероятно распространенное). (Вспышка, я имею в виду.)

1 голос
/ 02 июля 2010

Вы можете использовать <input name="image" type="file" accept="image/jpeg">, чтобы ограничить выбор пользователей.Но вам все равно нужно проверить тип файла на сервере.

Очевидно, что вы не можете отображать прогресс без запуска загрузки, поэтому вам следует сначала поискать API-интерфейс на стороне сервера, который будет обновлять состояние клиентазагрузка.Что касается индикаторов выполнения javascirpt, то в каждой библиотеке JavaScript есть один, например, индикатор выполнения jquery

1 голос
/ 02 июля 2010

Нет чистого html-способа показать определенные типы файлов, и нет простого javascript-способа.

Я использую пакет с именем FancyUpload: http://digitarald.de/project/fancyupload/, который обрабатывает эту часть для меня.Кроме того, он будет отображать индикатор выполнения загрузки, как вы и просили.

Я должен отметить, что добавленный мной загрузчик требует от вас наличия фреймворка javascript, называемого MooTools.Если вы предпочитаете jQuery (например, uploadify) или другой фреймворк, вы можете использовать другие похожие загрузчики.

Пожалуйста, убедитесь, что вы также проверяете на стороне сервера.

1 голос
/ 02 июля 2010

Этого нельзя сделать в простом HTML / Javascript, но есть несколько компонентов на основе Flash, которые могут это сделать - например, Uploadify приходит на ум.

Если вы можете житьс этим ограничением, есть много вопросов об этом (с хорошими ответами) здесь на SO .

...