2010-02-02 63 views
0

我有一個名爲DisplayBinaryData.aspx的網頁 - 此頁面的目的是顯示/下載任何單詞,excel,pdf或圖像。我打電話給這個網頁,並使用查詢字符串傳遞我的BinaryData實體的ID。 BinaryData實體包含使用asp.net fileUploadControl上傳的文件,文件名和內容類型。頁面加載代碼如下:在多個瀏覽器中使用asp.net顯示圖像和文檔

BinaryData obj = GetBinaryObjectById(int.Parse(Request.QueryString["id"])); 

    Response.Clear(); 

    Response.BufferOutput = true; 

    Response.AddHeader("Content-Disposition", "attachment; filename=" + obj.FileName); 

    Response.ContentType = obj.FileContentType; 

    Response.BinaryWrite(obj.BinaryFile); 

    Response.Flush(); 

    Response.Close(); 

    Response.End(); 

該代碼在IE中執行完美,但在FireFox中執行失敗。 IE會提示用戶保存或打開內容。 FireFox也會提示用戶,但對話框無法保存或打開任何內容。在谷歌瀏覽器中執行此操作時 - 沒有對話框,它會自動開始下載內容。

我的問題:我需要這個代碼與FireFox兼容 - 有什麼建議嗎?

回答

0

您提到Chrome的行爲只是針對Chrome的默認設置。您可以通過轉到「選項」窗口的「底層選項」選項卡來更改這些選項。然後選擇「詢問下載之前保存每個文件的位置」複選框。

您的obj.FileName名稱中是否有空格? 在不同的瀏覽器中看到這篇文章「Content Disposition」。

在不同 瀏覽器內容處理

今天,我必須解決其中 在不同的瀏覽器提交 動態生成的下載工作 非常不同/所有

的設置問題,我們有一個帶有 自定義擴展名的xml文件,例如.mj,它是由ASP提供的 。 HTTP 標題具有內容配置 標題和響應類型集。

Response.AddHeader "Content-Disposition", "attachment; filename=""our file.mj""" 
Response.ContentType = "text/xml" 

這在Internet Explorer中運行良好,在 文件下載爲 「我們的file.mj」。 然而,FireFox和Chrome的作用不同,FireFox的文件是 下載爲「我們的」,Chrome 爲「我們的file.xml」。在Firefox中 看來,問題是由 有文件名的空間造成的,這 論壇的帖子由funkdaddu幫我上 這一點,所以通過刪除空間火狐 現在可以下載該文件作爲 「ourfile.mj 」。 ...

相關問題