2010-11-12 32 views
1

我能夠通過uploadify + .ashx上傳我的文件,但問題是我總是得到ContentType = application/octet-stream獲取內容類型的.ashx的從uploadify

可以說,我上傳的圖像,我希望回到我"image/pjpeg",但無論我上傳了哪個文件,它總是返回"application/octet-stream"

請指點如何得到正確的contentType在ashx的

回答

0

我認爲,最有可能的內容類型過得去瀏覽器設置。無論如何,不​​同的瀏覽器可能會爲不同的文件設置不同的內容類型 - 並且它們可能會回退到通用內容類型,例如任何二進制文件(pdf,zip,doc,xls)的「application/octet-stream」。有可能一個瀏覽器會將docx報告爲「application/vnd.openxmlformats」,而另一個瀏覽器會將其報告爲「application/x-zip-compressed」,而另一個瀏覽器則會報告爲「application/octet-stream」。然而,所有這些都是正確的,因爲docx是二進制文件,並且是壓縮的(zip)文件。

總之,我建議你不應該依賴客戶端發送的內容類型(超出一定的範圍,比如決定它的文本,html還是二進制等)而是使用服務器端的嗅探邏輯來確定文件內容的類型,簡單的嗅探可以基於文件擴展,而更強大的實現將在實際文件內容上掠奪,其中通常前幾個字節的文件指示文件類型

+0

@VinaryC你有任何規則來定義基於文件擴展名的內容類型?你的答案我應該定義自定義權利? – kst 2010-11-12 06:06:36

+0

@kst,多數民衆贊成在正確的 - 我是說你應該在服務器上編寫自己的邏輯來決定文件內容類型。這是假定您將使用內容類型標題來決定如何處理文件類型。擴展庫嗅探意味着創建一個字典 - 即.gif意味着圖像/ gif,.pdf意味着應用程序/ pdf等 – VinayC 2010-11-12 09:03:28

+0

@VinaryC感謝好友! – kst 2010-11-12 10:02:14