Проверить тип файла после загрузки

Я загружаю файл на сервер, используя обычный 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, хотя.