首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Files.probeContentType的替代品?

Files.probeContentType的替代品?
EN

Stack Overflow用户
提问于 2013-11-01 00:32:33
回答 3查看 17.8K关注 0票数 34

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

然而,这导致了Files.probeContentType()的一个问题。虽然对我来说,在本地,在我的Linux dev机器上,Files.probeContentType()可以正确地工作并确定正确的mime类型,但当我将我的项目上传到生产服务器(amazon beanstalk)时,它似乎不能正确地确定mime类型。

通过读取javadoc,似乎Files.probeContentType()的实现是不同的,我认为在生产服务器上,它正在读取文件扩展名,因此无法确定内容类型。

接受File参数并返回像image/png这样的字符串作为结果mime类型的Files.probeContentType()有什么好的、快速的替代方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-01 00:37:57

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

代码语言:javascript
复制
 Tika tika = new Tika();
 File file = ...
 String mimeType = tika.detect(file);

下面是所需的最小maven依赖:

代码语言:javascript
复制
 <dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>1.12</version>
 </dependency>
票数 43
EN

Stack Overflow用户

发布于 2013-11-01 00:40:35

This answer建议使用:

代码语言:javascript
复制
InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream
票数 10
EN

Stack Overflow用户

发布于 2019-02-15 16:02:01

这也是可行的

String mimeType = URLConnection.guessContentTypeFromName(new File(path).getName());

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19711956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档