如何将文件发送到客户端以便打开“下载”对话框?

时间:2010-07-15 02:44:28

标签: asp.net asp.net-3.5

我有一个文件,在我的网站上说PDF,当用户访问某个页面时,我想在页面加载或按钮点击时显示pdf的下载对话框。

我进行了谷歌搜索,我找到了两种方法来做到这一点,但想知道这样做的可接受方式是什么?我目前正在做这个

string pdfPath = MapPath("mypdf.pdf");
Response.ContentType = "Application/pdf";


Response.AppendHeader( "content-disposition",
        "attachment; filename=" + name );
Response.WriteFile(pdfPath);
Response.End();

(代码基于http://aspalliance.com/259的代码,也找到了代码 http://www.west-wind.com/weblog/posts/76293.aspx

2 个答案:

答案 0 :(得分:5)

您的代码将完美地向用户显示该文件。但是他们必须使用“另存为”选项来实际保存它。

如果您希望向用户显示“保存对话框”,请尝试以下操作:

string pdfPath = MapPath("mypdf.pdf");
Response.ContentType = "Application/pdf";
Response.AppendHeader("content-disposition",
        "attachment; filename=" + pdfPath );
Response.TransmitFile(pdfPath);
Response.End();

这当然假设文件实际存在于服务器上并且没有动态生成。

答案 1 :(得分:0)

此代码将直接在客户端浏览器上发送任何文件

    Response.ContentType = "application/pdf";
    Response.WriteFile(PathToFile);
    Response.Flush();