我在我的網站上有一個頁面,它在服務器上動態生成PDF報告,同時向用戶瀏覽器顯示「請稍候」消息。完成後,將獨特的文件路徑放入會話中,然後打開download.aspx,它是page_load函數中以下c#代碼的空白欄。C#.NET文件下載只適用於IE
string fileUID = (string)(Session["fileUID"]);
string FilePath = @fileUID;
byte[] fileBytes = System.IO.File.ReadAllBytes(FilePath);
string sFileName = "Report.pdf";
System.Web.HttpContext context = System.Web.HttpContext.Current;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AppendHeader("content-length", fileBytes.Length.ToString());
context.Response.ContentType = "application/octet-stream";
context.Response.AppendHeader("content-disposition", "attachment; filename=" + sFileName);
context.Response.BinaryWrite(fileBytes);
context.Response.Flush();
System.IO.File.Delete(FilePath);
context.ApplicationInstance.CompleteRequest();
在IE瀏覽器中,會彈出允許用戶下載文件的下載對話框。然而,在鉻,火狐和Safari瀏覽器它只是坐在請等待頁永遠...
我也試過指定PDF文件的MIME類型,並沒有指定內容處置,使PDF在瀏覽器中顯示窗口,再次在Internet Explorer中完美工作,但沒有任何其他瀏覽器。
在本地主機上測試時以及上傳到服務器時都會出現此問題。
我已經在這裏和更廣泛的世界上搜索了兩個,並且似乎無法找到任何其他人有相同的問題。
請有人告訴我我的方式的錯誤。
是客戶端上的等待對話框。你有代碼可以告訴我們嗎? –
看看所做的實際網絡請求。發佈的代碼可能無關緊要 - 我懷疑FF/Chrome *從未在「請稍等..」之後提出二次請求。 – Paul
PDF是否顯示在瀏覽器或Acrobat Reader中取決於瀏覽器。在IE中,使用acrobat插件顯示PDF文件是標準的,其他瀏覽器可能需要配置爲執行此操作。 (這是更好的方法,我**討厭**當我的PDF下載在瀏覽器中顯示。**討厭它!!! **) – Treb