在下面的代码中,如何找到刚刚保存在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()
可以下载任何类型的文件。
答案 0 :(得分:1)
简短的回答:您不能。
长答案:
通过查看扩展名和文件内容,您可以猜测文件应该是哪种MIME类型。 Mime类型仅仅是将不同类型的文件结尾(例如jpg和jpeg)关联在一起的标准化标识符。在文件本身中找不到它们。
Files.probeContentType(path)
确实确实尽力猜测Asier在上面的评论中所提到的哑剧,但是该实现是特定于操作系统的,并不完整。建议改用Apache Tika:
Tika tika = new Tika();
MediaType type = tika.detect(new FileInputStream(fileBase));