7

只是想问我如何防止网络浏览器在浏览器上查看,因为每次用户单击链接下载它时在浏览器中查看

asp.net controller 
<li><asp:HyperLink ID="hl_download" runat="server" >Download</asp:HyperLink></li>
html
<a id="dnn_ctr932_View_hl_download" href="/ideaPark/DesktopModules/ResourceModule/pdf_resources/IdeaPark_ER_diagram.pdf">Download</a>
4

2 回答 2

17

使用链接按钮,以便您可以在单击时运行服务器端代码:

<asp:LinkButton ID="hl_download" runat="server" OnClick="hl_download_Click">Download</asp:LinkButton>

然后,在代码隐藏中:

public void hl_download_Click(Object sender, EventArgs e)
{
    Response.AddHeader("Content-Type", "application/octet-stream");
    Response.AddHeader("Content-Transfer-Encoding","Binary");
    Response.AddHeader("Content-disposition", "attachment; filename=\"IdeaPark_ER_diagram.pdf\"");
    Response.WriteFile(HttpRuntime.AppDomainAppPath + @"ideaPark\DesktopModules\ResourceModule\pdf_resources\IdeaPark_ER_diagram.pdf");
    Response.End();
}

这假定 Web 路径完全映射到文件的文件系统路径。否则进行修改Response.WriteFile(),使其指向文件系统上 pdf 文件的位置。

于 2013-08-20T16:29:29.060 回答
1

几天前我遇到了同样的问题,发现另一个人在 StackOverflow 上发布了一个很好的解决方案。这不是 100% 相同的场景,因为它使用 HttpRequests 在另一台服务器上获取文件,但是以八位字节流将文件发送到浏览器将保证弹出下载窗口。

从 URL 下载/流式传输文件 - asp.net

于 2013-08-20T17:19:04.117 回答