【问题标题】:Find the Mime-Type of a downloaded file查找下载文件的 Mime-Type
【发布时间】:2019-02-18 09:25:01
【问题描述】:

在下面的代码中,我如何找到刚刚保存在 File 对象中的文件的 mime 类型?

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() 可以下载任何类型的文件。

【问题讨论】:

  • Files.probeContentType(路径) || URLConnection.guessContentTypeFromName(file.getName());

标签: java fileutils


【解决方案1】:

简短回答:你不能。

长答案:

您可以通过查看扩展名和文件内容来猜测文件应该是什么 mime 类型。 Mime 类型只是将不同类型的文件结尾(例如 jpg 和 jpeg)关联在一起的标准化标识符。在文件本身中找不到它们。

Files.probeContentType(path) 确实如 Asier 在上面的评论中所说的那样尽力猜测 mime,但实现是特定于操作系统的,并不完整。建议改用Apache Tika

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 2015-12-04
    • 2011-01-14
    • 2016-12-23
    • 2010-11-07
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多