![](/img/trans.png)
[英]Can I have different MIME type mappings for different files with the same extension (in the same folder)?
[英]MP4 content type returned as different MIME type in different browsers
我有一個使用 C# 作為后端構建的 ASP.NET 應用程序。 我有一個上傳 pdf 並檢查 MIME 類型 application/pdf 以驗證它是有效文件的表單。 我需要在 MP4 文件的單獨表單上執行此操作,但它似乎不起作用。 它總是返回假。 我檢查了 webkit 中返回的 MIME 類型 FileUpload.PostedFile.ContentType,它非常准確。 然而,Firefox 5 和 IE 8 分別針對 text/csv 和 application/octet-stream 進行了測試。 這對我來說完全沒有意義。 我還嘗試將擴展名映射到 web.config 文件中的正確 MIME 類型,如下所示:
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
<mimeMap fileExtension=".m4v" mimeType="video/m4v" />
<mimeMap fileExtension=".ogg" mimeType="video/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm" />
</staticContent>
在后端 CS 文件中,我使用它來測試發布文件的內容類型:
if (file.PostedFile.ContentType == "video/mp4" ||
file.PostedFile.ContentType == "video/mpeg" ||
file.PostedFile.ContentType == "video/ogg" ||
file.PostedFile.ContentType == "video/quicktime" ||
file.PostedFile.ContentType == "video/webm")
return true;
else
return false;
另請注意,我使用的是 VS 自帶的本地開發服務器
確定發送到服務器的內容類型的是客戶端的瀏覽器。 也就是說,瀏覽器發送 ASP.NET 用來填充 HttpPostedFile.ContentType 屬性的 header。
您無法使用 IIS staticContent mime mappings 更改此設置,這些設置僅適用於服務器發送到客戶端的文件(而不是相反)。
在您發布 if-else 塊之前,您最好在 c# 方法中使用一些自定義代碼,以(嘗試)通過服務器端檢查確定真正的 mime 類型。 看看這兩種方法,它們會導致不同的結果和性能:
注意:一般來說,您應該始終檢查/確定服務器上的內容類型,並且永遠不要依賴客戶端發送的內容類型(永遠不要相信 HttpPostedFile.ContentType):它可能是意外錯誤(就像您發生的那樣),被某些人故意更改hacky 用戶,錯誤是因為瀏覽器不符合某些標准(眾所周知,IE 會為某些圖像格式發送錯誤的 mime 類型)...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.