2013-11-22 31 views
1

當使用版本4.0.3直接上傳到AWS S3時,通過IE9發送的上傳內容類型將設置爲binary/octet-stream而不是實際的內容類型上傳的文件。如何讓IE9在直接上傳到S3時設置內容類型

這不會發生在Firefox/Chrome中(尚未測試safari)。

獲取IE9(或更低版本)上設置的內容類型的訣竅是什麼?

回答

1

默認情況下,如果未指定爲請求參數,AWS將在對象上設置Content-Type的「application/octet-stream」。我們根據上傳的關聯Blob對象上的type屬性在現代瀏覽器中發送Content-Type參數。 IE9及更早版本不支持File API,因此我們必須在內部維護一個MIME類型擴展表,以便發送相同的信息以及對IE9及更高版本的請求。目前尚不清楚這是否值得付出努力。

非常坦率地說,這是S3的一個缺點,因爲它應該簡單地在文件的多部分邊界內部使用Content-Type參數(如果請求是MPE)。我不確定爲什麼S3不會解析這個值。

爲什麼這些信息對您很重要?無論如何,這個值不能保證是正確的,因爲它基於文件擴展名,可能會或可能不會準確地描述文件容器。如果你想正確識別一個文件的類型,你應該通過魔術字節解析。

+0

這對於稍後公開並直接從S3提供服務​​的文件來說非常重要。我們的密鑰不包含擴展名(所以我們不必在應用程序中維護映射到它們 - 它們只是一個ID,我可以在後面修復內容類型,但我很好奇技術原因謝謝你的回覆。 –