найти расширение файла по коду Java - PullRequest
0 голосов
/ 21 февраля 2012

Предположим, пользователи могут загружать файлы, я хочу найти расширение загруженного файла.Даже если пользователь переименовал расширение файла, я хочу найти реальное расширение этого файла по его заголовку или байт-коду ... и т. Д.

Пожалуйста, помогите мне с решением.

Примечание: Не только расширение substring () или getContentType (), но и реальное расширение файла, например, в Windows, его файл .doc, и пользователь переименовывает его в .jpg и загружает его.Это возможно в PHP, но я не знаю, как это сделать в Java!Но это может быть сделано.Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Быстрый поиск поднял этот пост: http://fredeaker.blogspot.com/2006/12/file-type-mime-detection.html

В записи перечислены несколько «волшебных» библиотек, которые могут определять тип файла на основе его содержимого.

0 голосов
/ 21 февраля 2012

Apache Commons: FileUpload - хорошее место для начала. Кроме того, вы можете посмотреть на ссылку, на которую я ссылался: JSP: Получить MIME-тип при загрузке файла , чтобы получить подсказки о том, как это сделать.

Как пользователь заявляет в своем вопросе, мысль заключается в том, что если я переименую .png в .jpg , это обманет getContentType (), заставив думать, что теперь это .jpg файл. Быстрый поиск в Google дал следующий результат ответа: Получить MIME-тип из файла , в котором перечислены 3 очень хороших варианта:

  1. Apache Tika

    Инструментарий Apache Tika ™ обнаруживает и извлекает метаданные и структурированный текстовый контент из различных документов с использованием существующих библиотек синтаксического анализатора

  2. JMimeMagic

    jMimeMagic - это библиотека Java для определения типа файлов или потоков MIME

  3. Java-библиотека, которая утверждает, что поможет вам в этом: mime-util

    Разрешить программам на Java определять типы MIME на основе расширений файлов, магических данных и перехвата содержимого. Поддерживает обнаружение из массивов java.io.File, java.io.InputStream, java.net.URL и байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...