Я хотел бы определить тип файла MIME на стороне клиента моего приложения с помощью jQuery или JavaScript. Есть ли способ сделать это? Спасибо.
jQuery или JavaScript: получить MIME-тип клиентского файла
Ответы (3)
Вы можете использовать AJAX, сделать запрос HEAD и проверить заголовки ответа на наличие заголовка Content-type
. Но это работает, только если вы получаете файл с HTTP-сервера.
Чтобы получить MIME-тип файла, выбранного с помощью средства выбора файлов HTML, ничего не отправляя, попробуйте:
document.getElementById('fileChooserID').files[0].type // e.g. image/png
Пример
Попробуйте выбрать изображение, проверьте тип MIME и попробуйте отправить его. Затем попробуйте что-то еще, кроме изображения.
Единственный способ надежно определить MIME-тип — это проанализировать файл на стороне сервера, чтобы убедиться, что это именно тот тип, который утверждает пользователь, или что он соответствует списку разрешенных типов. . Что следует учитывать:
1 — JavaScript имеет ограниченный доступ к локальной файловой системе, и на то есть веские причины.
2 - Вы не можете доверять MIME-типу, полученному из браузера. Он не обязательно будет соответствовать MIME-типу отправленного файла.
3 - В ситуации, когда пользователю разрешено загружать файлы, которые соответствуют «белому списку» разрешенных типов, проверка, вероятно, необходима в любом случае, учитывая, что приложению, возможно, придется что-то делать с файлом помимо их сохранения, что было бы в по крайней мере, включать анализ их заголовков для получения такой информации, как длина тиража (для видео), номер версии (для документа Word) и так далее.
идея НЕ заключается в доверии к браузеру. Идея состоит в том, чтобы выполнить эту проверку на стороне сервера, но какая полезная вещь, если перед отправкой файла размером 20 МБ в браузер, а затем будет отклонен, потому что правило на сервере... так что, рекомендуется «предварительно проверить», является ли этот файл «кандидатом» для загрузки, окончательная проверка будет выполнена на сервере.