我有一个gridview,我在其中为用户提供了下载pdf文件的选项。当他们点击pdf图标时,有时会在新标签页中打开pdf文件,有时会开始下载。我怎样才能让它永远下载?
答案 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>
然后,由用户决定是在本地保存文件还是只在屏幕上看到它。我认为重要的是这不会干扰用户正在查看的当前页面。