私はiTextSharpを使用してPDFレポート(ファイル)を作成し、それらをアプリケーションが存在するWebサーバーに保存しています。ファイルを作成し、ストレージフォルダーに移動して、問題なくファイルを開くことができます。注意:ユーザーは、作成時にファイルを自動的にダウンロードすることはできません。
ボタンを使用してサーバーから「古い」レポートをダウンロードするオプションをユーザーに提供したいと思います。これはIE(10)では正常に機能しますが、ChromeとFirefoxでは機能しません。常にエラーメッセージが表示されます:このドキュメントを開くときにエラーが発生しました。ファイルが破損しているため、修復できませんでした。
この画像ボタンがあり、クリックすると、この投稿に従って(私のページには更新パネルが含まれているため)ユーザーを汎用ハンドラーに送信します(現時点では部分的にのみ使用しています)。
これは、実際にファイルをダウンロードするコードです。
public void ProcessRequest(HttpContext context)
{
var _fileName = context.Request.QueryString["fileName"];
using (var _output = new MemoryStream())
{
//var _fileSeverPath = context.Server.MapPath(_fileName);
context.Response.Clear();
context.Response.ContentType = "application/pdf";// "application/pdf";
//context.Response.AppendHeader("Content-Length", _fileName.Length.ToString());
context.Response.AppendHeader("Content-Disposition", string.Format("attachment; filename=" + Path.GetFileName(_fileName)));
context.Response.WriteFile(_fileName);
context.Response.Flush();
context.Response.Close();
context.Response.End();
}
}
私が言ったように、これはIEでは正常に機能しますが、ChromeとFirefoxでは機能しません。メモ帳でファイルを開くと、ChromeとFirefoxにダウンロードしたときにファイルの約1/3しか取得されないことがわかります。
任意の提案をいただければ幸いです。数日間これを解決しようとしています。