使用IE在ASP.NEt中下载PDF

时间:2011-04-07 14:01:38

标签: asp.net internet-explorer firefox pdf google-chrome

因此,我使用了一些代码来强制下载基于ASP.Net的项目。这段代码适用于Firefox和Chrome,因为某些奇怪的原因不能在IE中使用。更奇怪的是,它最初在这三个方面都有效,并且最近在IE中停止了工作。以下是我使用的代码,如果需要进行任何调整或可能出现的问题,请告诉我。

 string path = MapPath(fname);
    string name = Path.GetFileName(path);
    string ext = Path.GetExtension(path);
    string type = "Application/pdf";
    Response.AppendHeader("content-disposition","attachment; filename=" + path);
    Response.WriteFile(path);
    Response.End();  

更多细节 这是改进的代码,仍然不适用于IE。

 string path = MapPath(fname);
    string name = Path.GetFileName(path);
    string ext = Path.GetExtension(path);
    string type = "Application/pdf";
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = type;
    Response.AddHeader("content-disposition","attachment; filename=" + path);
    Response.WriteFile(path);
    Response.End();  

4 个答案:

答案 0 :(得分:4)

您应该尝试将mime类型设置为“application / octet-stream”。如果您不希望特定处理程序响应mime类型。

答案 1 :(得分:1)

这个代码应该

 Response.AddHeader("content-disposition","attachment; filename=" + path);

改为

 Response.AddHeader("content-disposition","attachment; filename=" + name + "." + ext);

 Response.AddHeader("content-disposition","attachment; filename=" + name + ".pdf");

要检查的其他事项

     
  1. 在开始时将Response.Buffer改为true
  2. Response.clear开头
  3. 使用response.binarywrite而不是writefile
  4. 最后的反应冲洗
  5. 确保没有HTML或空格字符写入response.stream而不是binarywrite。

答案 2 :(得分:0)

在顶部添加以下两行,为我修复:

Response.ClearContent();
Response.ClearHeaders();

答案 3 :(得分:0)

问题解决了。它没有经过的原因是由于主页上出现了一个额外的表单,显然是覆盖了按钮。一旦修复,它在所有浏览器中都能正常工作。