java - 查找下载文件的 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()
可以下载任何类型的文件。
解决方案
简短的回答:你不能。
长答案:
您可以通过查看扩展名和文件内容来猜测文件应该是什么 mime 类型。Mime 类型只是将不同类型的文件结尾(例如 jpg 和 jpeg)关联在一起的标准化标识符。在文件本身中找不到它们。
Files.probeContentType(path)
正如 Asier 在上面的评论中所说,确实尽力猜测 mime,但实现是特定于操作系统的,并不完整。建议改用Apache Tika:
Tika tika = new Tika();
MediaType type = tika.detect(new FileInputStream(fileBase));
推荐阅读
- c# - 使用 switch 语句进行加法和减法
- angular - [ngModel] [(ngModel)] 和 ngModel 有什么区别
- python - 在 Kivy for android 中打包 Biopython
- python - Spark中的嵌套案例
- mysql - 现在是使用 meilisearch 之类的解决方案的合适时机吗?
- javascript - 根据输入的数字向数组添加元素
- node.js - MongoDB中不同集合的聚合
- php - 谷歌人员 API | 从回复中提取电子邮件地址 | PHP
- mysql - 循环中的节点 JS 回调
- node.js - 如何修复“请等待几分钟再试一次”错误instagram?