【问题标题】:How to force a hyperlink to show the open/save dialog box instead of opening it in browser?如何强制超链接显示打开/保存对话框而不是在浏览器中打开它?
【发布时间】:2012-10-03 23:58:55
【问题描述】:

在我的代码中,我动态生成了几个超链接,这些超链接是指向服务器中托管的 PDF/Jpg/bitmap/Png/Docx/Xlsx/Pptx 文件的直接链接。

代码看起来有点像这样。

private void PopulateLinks(string linkText, string URL)
{
   DIV_download.innerHtml += "<a href='" + URL + "'>" + linkText + "</a> <br/>"; 
}

问题是浏览器可以处理的任何文件都在同一个选项卡中打开。有什么方法可以强制 PDF 和 JPEG/Bitmap/Png 文件的下载对话框?

由于我在客户端需要这个,我不能使用内容分配方式,可以使用 javascript 或任何其他标记来完成吗?我的客户只使用 Internet Explorer,所以如果它只在 IE 中工作就足够了。

【问题讨论】:

  • 你需要这个客户端是什么意思?可以修改.htaccess文件吗?
  • 我也在努力解决这个问题,试图打开 PDF 文件的保存对话框。有没有办法只使用客户端 JavaScript 而不在服务器端进行任何修改?

标签: javascript asp.net html


【解决方案1】:

试试 Content-Disposition: attachment 代码中的属性 我的代码示例:

response.setHeader("Content-Disposition: attachment", "filename=\"" + filePath + "\"");

【讨论】:

    【解决方案2】:

    我很确定你不能做这个客户端。但是,您可以将 target=_blank 属性添加到链接标记。这将迫使它在新窗口中打开。或者您可以让您的客户右键单击链接并将目标另存为。

    【讨论】:

      【解决方案3】:

      您可以在 IE 中使用 DOM 方法 document.execCommand() 来做到这一点:

      <a href="javascript:void(0);"
       onclick="document.execCommand('SaveAs',true,'file.html');"
       >Save this page</a> 
      

      如果来自http://www.jtricks.com/bits/content_disposition.html。您可能需要调查跨浏览器兼容性。

      这个问题中还有一些信息可能对使用非 IE 浏览器感兴趣: Cross-browser Save As .txt

      【讨论】:

        猜你喜欢
        • 2018-02-16
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        相关资源
        最近更新 更多