2015-01-09 51 views
2

我已經編寫了一個IHttpHandler,它提取查詢字符串參數並使用它們來確定發送回的文件類型。在處理我稱之爲:使用Asp.Net下載文件IHttpHandler給出不同的文件屬性結果

private static void GetSegmentFile(HttpContext context) 
{ 
    byte[] file = GetFile(); 
    context.Response.ContentyType = "application/octet-stream"; 
    context.Response.BinaryWrite(file); 
} 

在瀏覽器端試圖下載該文件時,我得到不同的結果(使用鼠標右鍵>另存爲與它的網頁網站的鏈接的href設置爲文件的URL )。使用test.docx這些都是我的結果:

鉻:文件具有原始文件名和文件擴展名 IE 11:文件重命名爲media.zip文件擴展名。

我附上了一張圖片來展示我的意思。 enter image description here

+1

我相信你的兩個文件是不同的(瀏覽器和代碼)。確保兩條路徑相同 – 2015-01-09 19:38:36

+0

你無法使瀏覽器窗口縮小一點以便屏幕截圖? :P – DLeh 2015-01-09 19:39:49

+0

右鍵點擊什麼?你如何下載?順便說一句。你不缺乏Content-Disposition頭文件嗎? – 2015-01-09 19:44:23

回答

1

您需要發送Content-Disposition HTTP標頭。您可以通過這種方式發送文件名。 IE試圖解釋你發送的字節,發現它是一個zip文件。 Office文檔是具有不同擴展名的zip文件。

Chrome顯然使用URL來啓發式地構建一個名稱。

沒有明確的名稱瀏覽器應該做什麼?它只能猜測。

研究使用該HTTP標頭髮送文件名並指定名稱的正確方法。