Как с помощью HTML ограничить типы файлов, которые можно загружать?
Чтобы упростить взаимодействие с пользователем, я хочу ограничить загрузку файлов только изображениями (jpeg, gif, png).
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
html
image
upload
file-upload
JacobT
источник
источник
Ответы:
HTML5 говорит
<input type="file" accept="image/*">
. Конечно, никогда не доверяйте проверке на стороне клиента: всегда проверяйте снова на стороне сервера ...источник
Ввод файла HTML5 имеет атрибут accept, а также множественный атрибут. Используя несколько атрибутов, вы можете загружать несколько изображений в один экземпляр.
Вы также можете ограничить несколько типов MIME.
и другой способ проверки типа MIME с помощью файлового объекта.
файловый объект дает вам имя, размер и тип.
Вы также можете ограничить пользователя для загрузки некоторых типов файлов с помощью приведенного выше кода.
источник
image/*|audio/*|video/*
у меня не работает, кажется, его следует разделять запятыми:image/*,video/mp4,.txt
Edited
Если бы все было так, как ДОЛЖНО, вы могли бы сделать это с помощью атрибута «Принять».
http://www.webmasterworld.com/forum21/6310.htm
Однако браузеры в значительной степени игнорируют это, поэтому это несущественно. Короткий ответ: я не думаю, что есть способ сделать это в HTML. Вместо этого вам нужно будет проверить это на стороне сервера.
В следующем более старом посте есть информация, которая может помочь вам с альтернативами.
Атрибут 'accept' ввода файла - это полезно?
источник
Вот HTML для загрузки изображения. По умолчанию файлы изображений будут отображаться только в окне просмотра, потому что мы установили
accept="image/*"
. Но мы все еще можем изменить его в раскрывающемся списке, и он покажет все файлы. Таким образом, часть Javascript проверяет, является ли выбранный файл фактическим изображением.Здесь, в событии изменения, мы сначала проверяем размер изображения. А во втором
if
условии мы проверяем, является ли это файлом изображения.this.files[0].type.indexOf("image")
будет,-1
если это не файл изображения.источник
Теперь в html-части
этот код проверяет, является ли загруженный файл файлом jpg или нет, и ограничивает загрузку других типов
источник
Вы можете сделать это безопасно только на стороне сервера. Использование атрибута accept - это хорошо, но он также должен быть проверен на стороне сервера, чтобы пользователи не могли использовать cURL для вашего скрипта без этого ограничения.
Я предлагаю вам: удалить все файлы без изображения, предупредить пользователя и повторно отобразить форму.
источник
В конечном итоге фильтр, отображаемый в окне «Обзор», устанавливается браузером. Вы можете указать все нужные фильтры в атрибуте Accept, но у вас нет гарантии, что браузер вашего пользователя будет его придерживаться.
Лучше всего выполнить какую-то фильтрацию в бэкэнде на сервере.
источник
Оформить заказ на проект под названием Uploadify. http://www.uploadify.com/
Это загрузчик файлов на основе Flash + jQuery. При этом используется диалоговое окно выбора файла Flash, которое дает вам возможность фильтровать типы файлов, выбирать несколько файлов одновременно и т. Д.
источник