首页 > 解决方案 > 查找下载文件的 Mime-Type

问题描述

在下面的代码中,我将如何找到刚刚保存在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()可以下载任何类型的文件。

标签: javafileutils

解决方案


简短的回答:你不能。

长答案:

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

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

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

推荐阅读