Ответ 1
Попробуйте Java Mime Magic Library
byte[] data = ...
MagicMatch match = Magic.getMagicMatch(data);
String mimeType = match.getMimeType();
У меня есть веб-страница, которую можно использовать для загрузки файлов.
Теперь мне нужно проверить правильность типа файла (zip, jpg, pdf,...).
Я могу использовать mimeType, который поставляется с запросом, но я не доверяю пользователю и могу сказать, что хочу быть уверенным, что никто не может загрузить файл .gif, который был переименован в .jpg
Я думаю, что в этом случае я должен проверить магический номер .
Это - это Java-библиотека, которую я нашел, которая, кажется, достигает того, что мне нужно, "извлеките миметик из магического номера" .
Это правильное решение или что вы предлагаете?
UPDATE:
Я нашел проект mime-util и кажется очень хорошим и современным! (может быть, лучше, чем Java Mime Magic Library?)
Вот список проектов утилиты, которые могут помочь вам извлечь mime-типы
Попробуйте Java Mime Magic Library
byte[] data = ...
MagicMatch match = Magic.getMagicMatch(data);
String mimeType = match.getMimeType();
Я уверен, что библиотека, размещенная @sfussenegger, является лучшим решением, но я делаю это вручную со следующим фрагментом, который, надеюсь, он может вам помочь.
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 на этот вопрос. И вы вполне можете это сделать уже в пути к классам вашего сервера приложений.