【问题标题】:How to force browser to download, not view, PDF documents in ASP.NET Webforms如何强制浏览器在 ASP.NET Webforms 中下载而不是查看 PDF 文档
【发布时间】:2013-08-22 17:43:45
【问题描述】:

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

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>

【问题讨论】:

  • 这是一个用户设置。不要惹用户。如果我使用了您的网站,但没有得到预期的行为,我会很生气。
  • 我知道,但我们的客户要求
  • 您通过发送标头 Content-Type: application/octet-stream 将 pdf 下载伪装成下载而不是 pdf 文档,下面是您在 php 中的操作方法 stackoverflow.com/questions/7263923/…
  • 那是 PHP 我的问题在 .net 中

标签: html asp.net webforms


【解决方案1】:

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

<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文件的位置。

【讨论】:

    【解决方案2】:

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

    Download/Stream file from URL - asp.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2011-09-11
      • 2014-01-29
      相关资源
      最近更新 更多