Найти MIME-тип загруженного файла - PullRequest
0 голосов
/ 18 февраля 2019

В приведенном ниже коде, как найти тип MIME файла, который только что был сохранен в File объекте?

File fileBase = new File("classpath:test");
try {
    FileUtils.copyURLToFile(
            new URL(docUploadDto.getAssetFileUrl()), 
            fileBase);
} catch (MalformedURLException e) {
    responseDto.setMessage("Malformed URL : "+e.getMessage());
    responseDto.setStatus("500");
    return responseDto;
} catch (IOException e) {
    responseDto.setMessage("IO Error : "+e.getMessage());
    responseDto.setStatus("500");
    return responseDto;
}

Мой docUploadDto.getAssetFileUrl() может загрузить любой тип файла.

1 Ответ

0 голосов
/ 18 февраля 2019

Краткий ответ: Вы не можете.

Длинный ответ:

Вы можете догадаться, каким типом mime должен быть файл, посмотрев на расширение и содержимое файла.Типы MIME - это просто стандартизированные идентификаторы, которые связывают различные типы окончаний файлов, такие как jpg и jpeg вместе.Они не найдены в самом файле.

Files.probeContentType(path) действительно старается угадать пантомиму, как сказал Асьер в комментарии выше, но реализация зависит от ОС и не завершена.Рекомендуется использовать Apache Tika вместо:

Tika tika = new Tika();
MediaType type = tika.detect(new FileInputStream(fileBase));
...