我一直在尝试找出如何从Java 6的字节数组中获取MIME类型,但不幸的是,我还没有成功获取MIME类型。
有人能帮助我解决这个问题吗?
我一直在尝试找出如何从Java 6的字节数组中获取MIME类型,但不幸的是,我还没有成功获取MIME类型。
有人能帮助我解决这个问题吗?
MimetypesFileTypeMap
类。这个类专门用于获取MIME类型。如下所示,使用它来获取MIME类型:byte[] content = ;
InputStream is = new BufferedInputStream(new ByteArrayInputStream(content));
String mimeType = URLConnection.guessContentTypeFromStream(is);
要从文件中获取数据,您可以使用以下代码:
MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();
String mime = mimeTypesMap.getContentType(file);
InputStream is = new BufferedInputStream
更改为BufferedInputStream is = new BufferedInputStream
,因为InputStream
具有.markSupported() == false
,因此mimeType
始终为null,而缓冲版本具有.markSupported() == true
。 - Samuel PrevostApache Tika library 在我的测试中证明是最准确的,可以从字节数组中检测出正确的 MIME 类型,比 Java 的 URLConnection.guessContentTypeFromStream()
要好得多,后者在我的测试中并不可靠。
implementation("org.overviewproject:mime-types:0.1.3")
用法
// input
final var fileName = "somefile.html";
final var content = "<html></html>".getBytes();
final var mimeTypeDetector = new MimeTypeDetector(); // initialize only once, reuse!
final var mimeType = mimeTypeDetector.detectMimeType(fileName, () -> content);
System.out.println(mimeType); // prints: text/html