簡體   English   中英

在 Java 中獲取文件的正確 MIME 類型

[英]Getting the correct MIME type of a file in Java

我讀到 Files.probeContentType(path) 可用於獲取文件的文件類型,而無需依賴文件擴展名。 但是在我的情況下,如果我刪除文件類型,該函數將返回文件類型“null”。 如果我附加了正確的擴展名,那么我得到的類型是“image/jpeg”。 任何人都可以在這里發生什么,或者我對 probeContentType 的理解不正確嗎? 無論它是否具有文件擴展名,我都希望它返回“image/jpeg”。

這是我故意從文件“Nature.jpg”中刪除擴展名的情況:

在此處輸入圖像描述

使用 org.apache.tika (v2.4)更新

Tika tika = new Tika();
String myType = tika.detect(filePath);

如果文件擴展名不存在,我將文件類型設為“application/octet-stream”。 該圖像最初是 jpeg,因此我希望它能夠將其檢測為圖像。

雖然它可能不依賴於所有實現中的文件擴展名,但它可能會在其他實現中使用它。 根據甲骨文的說法——“這種方法的實施是高度特定於平台的,而且並非萬無一失。”

“文件類型檢測器確定文件類型的方法是高度特定於實現的。一個簡單的實現可能會檢查文件擴展名(某些平台中使用的約定)並將其映射到文件類型。在其他情況下,文件類型可能存儲為文件屬性,或者可以檢查文件中的字節以猜測其文件類型。” - https://docs.oracle.com/javase/8/docs/api/java/nio/file/spi/FileTypeDetector.html

您可以嘗試 Apache Tika 作為替代方案,我有很好的經驗 - https://tika.apache.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM