- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在将 Mimetypes 添加到 MimetypesFileTypeMap 时遇到问题。我试过添加一个 META-INF/mime.types 文件,就像 Documentation说到。但它似乎没有被 MimetypesFileTypeMap 读取。
我错过了什么吗?
它是一个 Spring/Maven Web 项目。任何帮助将不胜感激!
偶更偏方点。前几天,路人 (Andrew T.) 正在对 MIME 类型进行一些调查,并在 MimetypesFileTypeMap
中发现了此文档。 JavaDocs。
MimetypesFileTypeMap
在用户系统的不同位置查找 MIME 类型文件条目。当请求在 MimetypesFileTypeMap
中搜索 MIME 类型时, 它按以下顺序搜索 MIME 类型文件:
MimetypesFileTypeMap
实例。.mime.types
在用户的主目录中。<java.home>/lib/mime.types
.META-INF/mime.types
的文件或资源.META-INF/mimetypes.default
的文件或资源(通常只能在 activation.jar
文件中找到)。 (A)(A) 如 code posted by jwrobel 所示, Jar 实际上似乎是 resources.jar
在至少两个系统上(使用 JDK)。
所以鉴于这个来源..
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
的目录中从命令行运行它,我们也可以忘记 4 和 5 , 没有 activation.jar
在类路径上。只剩下选项 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 - 将 Mime 类型添加到 MimetypesFileTypeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308142/
我正在尝试从文件中获取 mime 类型,但它似乎总是在返回 application/octet MimetypesFileTypeMap mftm = new MimetypesFileTypeM
我在将 Mimetypes 添加到 MimetypesFileTypeMap 时遇到问题。我试过添加一个 META-INF/mime.types 文件,就像 Documentation说到。但它似乎没
我有一些代码: import javax.activation.MimetypesFileTypeMap; ... .. . String filename = "foo.xls"; // Where
我正在编写一个代码,用于下载存储在 MySQL 中的不同文件。我已经使用 MimetypesFileTypeMap 的方法 mimetypesFileTypeMap.getContentType()
我正在尝试确定存储在 Android 设备(实际上是我与模拟器一起使用的虚拟设备)上的文件的 Mime/媒体类型。我找到了这个资源 Get the MIME Type from a File它推荐 j
我正在尝试使用 javax.activation.MimetypesFileTypeMap 获取内容类型。 对于字符串“image.png”,它总是返回“application/octect-stre
在我的 android 项目中,我使用了一个将使用该类的外部 jar 错误信息如下: 06-13 02:45:18.586: ERROR/dalvikvm(228): 找不到类 'javax.acti
我是一名优秀的程序员,十分优秀!