私のサイトには、サーバー上で動的に PDF レポートを生成するページがあり、ユーザーのブラウザには「お待ちください」というメッセージが表示されます。終了後、一意のファイルパスをセッションに配置し、空のバーである download.aspx を開きます。これは、page_load 関数の次の c# コードです。
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 では、ダウンロード ダイアログが表示され、ユーザーはファイルをダウンロードできます。ただし、chrome、firefox、safari では、いつまでもお待ちくださいページにとどまります...
また、PDF ファイルの MIME タイプを指定し、ブラウザ ウィンドウに PDF を表示するために content-disposition を指定しないことも試みましたが、Internet Explorer では完全に機能しますが、他のブラウザでは機能しません。
この問題は、localhost でのテスト時とサーバーへのアップロード時の両方で発生します。
私はこことより広い世界の両方を検索しましたが、同じ問題を抱えている人を他に見つけることができないようです.
誰か私のやり方の間違いを教えてください。