我正在使用 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 的文件。
任何建议将不胜感激。这几天一直在尝试解决这个问题..