Java 查找下载文件的Mime类型

Java 查找下载文件的Mime类型,java,fileutils,Java,Fileutils,在下面的代码中,我将如何找到刚刚保存在file对象中的文件的mime类型 File fileBase = new File("classpath:test"); try { FileUtils.copyURLToFile( new URL(docUploadDto.getAssetFileUrl()), fileBase); } catch (MalformedURLException e) { responseDto.setMe

在下面的代码中,我将如何找到刚刚保存在
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)
确实尽了最大努力猜测mime,正如Asier在上面的评论中所说的那样,但是实现是特定于操作系统的,并且不完整。建议改为使用:

Files.probeContentType(path)| | URLConnection.guessContentTypeFromName(file.getName());
Tika tika = new Tika();
MediaType type = tika.detect(new FileInputStream(fileBase));