Подтвердить что ты не робот

JQuery или JavaScript: получить MIME-тип файла клиента

Я хотел бы определить тип MIME файла на клиентской стороне моего приложения, используя jQuery или JavaScript. Есть ли способ сделать это? Спасибо.

4b9b3361

Ответ 1

Вы можете использовать AJAX, сделать запрос HEAD и проверить заголовки ответов для заголовка Content-type. Но это работает только в том случае, если вы получаете файл с HTTP-сервера.


Чтобы получить тип MIME файла, выбранного с помощью выбора HTML файла, не отправляя ничего, попробуйте:

document.getElementById('fileChooserID').files[0].type // e.g. image/png

Пример

http://jsbin.com/akati3/2

Попробуйте выбрать изображение, проверьте тип MIME и попробуйте его отправить. Затем попробуйте еще что-нибудь, а не изображение.

Ответ 2

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

1 - JavaScript имеет ограниченный доступ к локальной файловой системе и не без оснований.

2 - Вы не можете доверять типу mime, который был получен из браузера. Он не обязательно будет соответствовать типу mime отправленного файла.

3 - В ситуации, когда пользователю разрешено загружать файлы, которые соответствуют "белым спискам" разрешенных типов, валидация, вероятно, необходима в любом случае - учитывая, что приложение может фактически что-то делать с файлом, не хранящим их, что будет, по крайней мере, включать анализ их заголовков для информации, такой как номер версии (для видео) версии (для документа Word) и т.д.

Ответ 3

Идея НЕ верна в браузере. Идея выполняет эту проверку на SERVER SIDE, но какая полезная вещь, если до отправки 20-мегабайтного файла в браузер, а затем отклоняется из-за правила на сервере..so, это хорошая идея "предварительно проверить", если этот файл "является кандидатом", который будет загружен, окончательная проверка будет выполнена на сервере.