打开对话框下载pdf

时间:2011-11-14 04:19:35

标签: c# asp.net

我有一个gridview,我在其中为用户提供了下载pdf文件的选项。当他们点击pdf图标时,有时会在新标签页中打开pdf文件,有时会开始下载。我怎样才能让它永远下载?

2 个答案:

答案 0 :(得分:3)

您需要添加一个按钮(图像按钮,linknbutton或按钮)并处理GridView的RowCommand事件。在RowCommand处理程序中,您可以编写代码来下载文件。

您可以使用Response对象的方法。

string filepath=MapPath("~/files/file.pdf");
byte []bytes=System.IO.File.ReadAllBytes(filepath);

Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Type", "application/octet-stream");
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.AddHeader("Content-Disposition","attachment; filename=file.pdf");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

答案 1 :(得分:2)

为了始终强制下载,您需要添加Content-Disposition标头,如AVD所示;但是,我发现这完全没必要;我认为在新窗口中打开PDF链接就足够了。换句话说,定义target="_blank"。例如:

<a href="file.pdf" target="_blank">invoice</a>

然后,由用户决定是在本地保存文件还是只在屏幕上看到它。我认为重要的是这不会干扰用户正在查看的当前页面。