我正在將文件上傳到Amazon s3存儲桶並可以訪問InputStream和包含文件的MIME類型但不包含原始文件名的字符串。在將文件推到S3之前,實際上創建文件名和擴展名取決於我。是否有一個庫或方便的方式來確定從MIME類型使用適當的擴展名?如何從Java中的MIME類型確定合適的文件擴展名
我已經看到了一些對Apache Tika庫的引用,但這似乎是矯枉過正,我還沒有能夠成功檢測到文件擴展名。從我已經能夠收集似乎這樣的代碼應該工作,但我只是得到一個空字符串時,我喜歡的類型變量爲「圖像/ JPEG」
MimeType mimeType = null;
try {
mimeType = new MimeTypes().forName(type);
} catch (MimeTypeException e) {
Logger.error("Couldn't Detect Mime Type for type: " + type, e);
}
if (mimeType != null) {
String extension = mimeType.getExtension();
//do something with the extension
}
你確定你需要設置一個文件擴展名?如果你知道MIME類型,你可以用適當的Content-Type將它上傳到S3,並且擴展(通常)變得不相關。 – willglynn
你是對的,我剛剛檢查過,並且在S3的ObjectMetadata中設置Content-Type在我的情況中是有用的。我仍然想知道這個問題的答案,似乎它可以在未來派上用場。 – rphutchinson
夠公平的。對於文件擴展名,沒有一種MIME類型的True True Mapping™ - 一些類型具有多個擴展名,一些擴展名具有多種類型 - 所以當我使用可以獨立存儲的數據存儲時,我嘗試只存儲我知道的並避免猜測。 – willglynn