Проверить тип файла после загрузки
Я загружаю файл на сервер, используя обычный API загрузки. Теперь я хочу проверить, является ли загруженный файл допустимым файлом.
У меня может быть несколько полей для загрузки файлов на странице. Которые имеют разные требования и должны принимать файлы разных типов.
Например:
Input file 1 should take just exe
Input file 2 should take just html
Input file 3 should take just pptx
Я могу проверить расширение и проверить одно решение, но может случиться, что некоторые могут подделать расширение и загрузить файл txt
вместо exe
и так
Итак, как я могу проверить, был ли загружен правильный тип файла или нет с помощью java
Получил некоторый Решение для одного и того же материала, но я не уверен, как это сделать? Любая помощь PLS
Ответы
Ответ 1
Для Commons-fileupload API вы можете получить тип содержимого следующим образом:
FileItem file;
String contentType = file.getContentType();
Исходя из этого, вы можете предоставить некоторые if-else
для реализации вашей логики. FileItem может быть DefaultFileItem.
Ответ 2
После проверки расширения вам также необходимо проверить подпись файла. Обычно это где-то в первых байтах файла. Для хорошего списка см. http://www.garykessler.net/library/file_sigs.html, так как он содержит довольно много файлов и их подписи.
Даже это, конечно, не безупречное, но оно как можно ближе к вам, не вникая в эвристику.
Ответ 3
Попробуйте загрузить каждый файл с помощью соответствующего метода. Например, попробуйте проанализировать html файл и попытаться загрузить файл pptx с помощью POI. Это не работает для exe, хотя.