HowTo извлекает MimeType из байта

У меня есть веб-страница, которую можно использовать для загрузки файлов.
Теперь мне нужно проверить правильность типа файла (zip, jpg, pdf, …).

Я могу использовать mimeType, который поставляется с запросом, но я не доверяю пользователю и, допустим, хочу быть уверенным, что никто не может загрузить файл .gif, который был переименован в .jpg
Я думаю, что в этом случае я должен проверить магический номер .
Это java-библиотека, которую я нашел, которая, похоже, достигает того, что мне нужно, «извлекает миметик из магического числа».
Это правильное решение или что вы предлагаете?

ОБНОВЛЕНИЕ: Я нашел проект mime-util, и он кажется очень хорошим и современным! (может быть, лучше, чем Java Mime Magic Library?)
Вот список проектов утилиты, которые могут помочь вам извлечь mime-типы

Попробуйте Java Mime Magic Library

byte[] data = ... MagicMatch match = Magic.getMagicMatch(data); String mimeType = match.getMimeType(); 

Я уверен, что библиотека, размещенная @sfussenegger, является лучшим решением, но я делаю это вручную со следующим fragmentом, который, я надеюсь, он может вам помочь.

 DESCONOCIDO("desconocido", new byte[][] {}), PDF("PDF", new byte[][] { { 0x25, 0x50, 0x44, 0x46 } }), JPG("JPG", new byte[][] { { (byte) 0xff, (byte) 0xd8, (byte) 0xff, (byte) 0xe0 } }), RAR("RAR", new byte[][] { { 0x52, 0x61, 0x72, 0x21 } }), GIF("GIF", new byte[][] { { 0x47, 0x49, 0x46, 0x38 } }), PNG("PNG", new byte[][] { { (byte) 0x89, 0x50, 0x4e, 0x47 } }), ZIP("ZIP", new byte[][] { { 0x50, 0x4b } }), TIFF( "TIFF", new byte[][] { { 0x49, 0x49 }, { 0x4D, 0x4D } }), BMP( "BMP", new byte[][] { { 0x42, 0x4d } }); 

С уважением.

PD: Лучше всего то, что у него нет никакой зависимости. PD2: никаких гарантий относительно правильности! PD3: «desconocido» означает «неизвестный» (на испанском)

Основой активации является ответ Sun на это . И вы вполне можете это сделать уже в classpath вашего сервера приложений

  • Пакетный эквивалент обратных ссылок Баша
  • Удаление файла в VBA
  • Как получить имя файла без расширения на Java?
  • Объединение нескольких текстовых файлов в один
  • Android - получить реальный путь .txt-файла, выбранного из файла explorer
  • Как проверить, ответил ли ping или нет в пакетном файле
  • Переименуйте файл с помощью Java
  • Как заполнить HashMap из файла свойств java с помощью Spring @Value
  • Запись / чтение файлов в / из внутренней памяти телефона Android
  • Создать файл с заданным размером в Java
  • Использование NanoHTTPD в Android
  • Давайте будем гением компьютера.