替换Files.probeContentType?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (322)

在我Web项目中,用户上传他们的文件,但是当我在服务器上接收到他们时,他们被存储为.tmp文件,而不是他们原来的文件扩展名(这也是我的首选行为)。

但是,Files.probeContentType()造成一个问题。虽然本地对我来说,在我的Linux开发机器上,Files.probeContentType()工作正常,并确定正确的MIME类型,当我上传我的项目到生产服务器,似乎没有正确确定MIME类型。

提问于
用户回答回答于

看看Apache Tika。它可以很容易地确定一个MIME类型:

 Tika tika = new Tika();
 File file = ...
 String mimeType = tika.detect(file);

这是一个最小的maven依赖:

 <dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>1.12</version>
 </dependency>
用户回答回答于

建议使用:

InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励