我在将PDF文件写入浏览器时遇到问题。其他mime类型工作正常。 PDF文件已损坏。
FileInfo file = new FileInfo(Path.Combine(_module.FileDir, _file.FilePath));
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = _file.ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Regex.Replace(_file.FilePath, "\\s", "-"));
Response.AppendHeader("Content-Length", file.Length.ToString());
try
{
Response.WriteFile(file.FullName);
Response.Flush();
Response.Close();
}
catch
{
Response.ClearContent();
}
答案 0 :(得分:1)
我的问题出在HTTP模块上。我正在应用白色空间过滤器
HttpApplication app = sender as HttpApplication;
if (app != null && app.Request.RawUrl.Contains(".aspx"))
{
app.Response.Filter = new WhitespaceFilter(app.Response.Filter);
}
答案 1 :(得分:1)
IIS HTTP压缩和流式处理PDF:不能正常工作。 http://blog.1530technologies.com/2006/11/iis_http_compre.html
答案 2 :(得分:1)
你需要这三个陈述:
Response.Flush(); Response.Close(); 到Response.End();
最后一个是最重要的。
答案 3 :(得分:0)
对于这种情况,Response.Redirect应该也可以正常工作:
FileInfo file = new FileInfo(Path.Combine(_module.FileDir, _file.FilePath));
Response.Redirect(file.FullName);
答案 4 :(得分:0)
我认为这可能是你的问题#3。 Microsoft's Knowledge Base提供了此代码,基本上就是您正在做的事情。
//Set the appropriate ContentType.
Response.ContentType = "Application/pdf";
//Get the physical path to the file.
string FilePath = MapPath("acrobat.pdf");
//Write the file directly to the HTTP content output stream.
Response.WriteFile(FilePath);
Response.End();