java 设置mime type_将Mimetype添加到MimetypesFileTypeMap - java

我在将Mimetypes添加到MimetypesFileTypeMap时遇到问题。我已经尝试添加META-INF / mime.types文件,就像Documentation所说的那样。但MimetypesFileTypeMap似乎没有读取它。

我想念什么吗?

这是一个Spring / Maven Web项目。任何帮助,将不胜感激!

甚至是陌生人的观点。一天,一个路人(Andrew T.)对MIME类型进行了一些调查,并在MimetypesFileTypeMap JavaDocs中发现了此文档。

MIME类型文件搜索顺序:MimetypesFileTypeMap在用户系统的各个位置查找MIME类型的文件条目。当请求在MimetypesFileTypeMap中搜索MIME类型时,它将按以下顺序搜索MIME类型文件:

以编程方式将条目添加到MimetypesFileTypeMap实例。

用户主目录中的.mime.types文件。

文件/lib/mime.types。

名为META-INF/mime.types的文件或资源。

名为META-INF/mimetypes.default的文件或资源(通常仅在activation.jar文件中找到)。 (A)

(A)如code posted by jwrobel所示,Jar实际上似乎是至少两个系统(带有JDK)上的resources.jar。

因此,鉴于此来源。

import java.io.File;

import javax.activation.MimetypesFileTypeMap;

class TestMime {

public static void main(String[] args) {

System.out.println(System.getProperty("java.version"));

File f = new File(System.getProperty("java.home"), "lib");

f = new File(f, "mime.types");

System.out.println(f.exists() + " \t - " +f);

f = new File(System.getProperty("user.home"), ".mime.types");

System.out.println(f.exists() + " \t - " +f);

MimetypesFileTypeMap mfm = new MimetypesFileTypeMap();

System.out.println(mfm.getContentType("a.js"));

System.out.println(mfm.getContentType("a.png"));

System.out.println(mfm.getContentType("a.jpg"));

System.out.println(mfm.getContentType("a.au"));

System.out.println(mfm.getContentType("a.htm"));

}

}

..我们可以排除以编程方式添加的“1”。如果我们从命令行在类路径上没有META-INF,没有activation.jar的目录中运行它,我们也会忘记4和5。仅留下选项2和3。

但是此来源的输出是..

1.6.0

false - C:\Program Files\Java\jdk1.6.0\jre\lib\mime.types

false - C:\Users\Andrew\.mime.types

application/octet-stream

application/octet-stream

image/jpeg

audio/basic

text/html

Press any key to continue . . .

即这两个文件上的false结果可能是显示为文件字符串的MIME映射的来源,建议最后两个信息来源。不存在。那么信息从何而来呢?

参考方案

Spring提供了a wrapper class,它附带了一个更新的MIME类型列表。使用它的方式与使用MimetypesFileTypeMap的方式几乎相同。

import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;

...

ConfigurableMimeFileTypeMap mimeMap = new ConfigurableMimeFileTypeMap();

String contentType = mimeMap.getContentType(uploadedName);//defaults to application/octet-stream

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…Java Globbing模式以匹配目录和文件 - java

我正在使用递归函数遍历根目录下的文件。我只想提取*.txt文件,但不想排除目录。现在,我的代码如下所示:val stream = Files.newDirectoryStream(head, "*.txt") 但是这样做将不会匹配任何目录,并且返回的iterator()是False。我使用的是Mac,所以我不想包含的噪音文件是.DS_ST…Java RegEx中的单词边界\ b - java

我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值