当前位置: 首页 > 面试题库 >

替代Files.probeContentType吗?

万承志
2023-03-14
问题内容

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

但是,这引起了问题Files.probeContentType()。虽然对我来说本地的,但是在我的Linux开发机器上,它Files.probeContentType()可以正常工作并且可以确定正确的mime类型,但是当我将项目上传到生产服务器(amazon
beantalk)时,似乎无法正确确定mime类型。

从阅读javadocs来看,的实现似乎Files.probeContentType()有所不同,而且我认为在生产服务器上,它正在读取文件扩展名,因此无法确定内容类型。

什么是一种好的快速选择Files.probeContentType(),它将接受一个File参数并返回一个字符串,image/png作为生成的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>


 类似资料:
  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 首先-我的描述;) 我从服务器收到XmlHttpRequests JSON响应。MySQL驱动程序将所有数据输出为字符串,PHP将其按原样返回,因此任何整数都将作为字符串返回,因此: JS中的parseInt()函数是否有任何快速替代方法(hack),可以解析纯数字字符串,例如 问题答案: 要转换为整数,只需使用一元+运算符,它应该是最快的方法: 可以通过类似的方式转换为其他类型: 更

  • 问题内容: 我有以下内容: 和 终于我有了 如果我做 和P元帅,我只是把田野当作事物的一部分,而不是高度。 我知道我可以在A中添加@XmlSeeAlso(B.class),这一切都可以。 但是问题是我不知道B以外的所有扩展类,因为A可能在运行时扩展。 如何在运行时动态定义@XmlSeeAlso? 问题答案: 这取决于您如何创建JAXBContext。该newInstance方法可以与所有的类的显式

  • 问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再

  • 问题内容: 我正在尝试使用CSS和没有jquery动态地更改div的宽度。 以下代码将 我还希望支持IE 5.5及更高版本 ,我发现了以下内容:表达式。这是正确的用法吗? 我还可以支持Opera和Android浏览器吗? 问题答案: 几乎总是可以替换计算规则,例如用于布局。 例如: 如果我有以下标记: 而不是这样做:(假设边栏为300px宽) 做这个: PS: 我不会在IE 5.5(hahahah