【问题标题】:How to show the save dialog using HTML如何使用 HTML 显示保存对话框
【发布时间】:2012-01-10 09:02:42
【问题描述】:

当我单击<a> 标签时,如何强制保存文件下载对话框?远程服务器上有一个可用的 PDF 文件,当用户单击该链接时,我们希望将该 PDF 文件下载到他们的本地系统。

谢谢

【问题讨论】:

  • 打开/保存?你希望用户打开什么?
  • 仔细阅读我的帖子。 “当用户单击该链接时,我们希望将该 pdf 文件下载到本地系统。”我觉得这很清楚?编辑:我会改变我的标题。对不起

标签: javascript asp.net .net html


【解决方案1】:

通常,当您链接文件时,该文件将始终显示在浏览器中,因为浏览器会加载它并根据文件扩展名自动确定内容类型。因此,当您单击 jpg 图像 pdf 等链接时,浏览器知道它是图像/文件并会显示该文件。当然,您始终可以使用浏览器快捷菜单并使用“目标另存为”选项将文件保存到磁盘。

如果您想在从服务器端单击链接时自动执行此操作,您必须自己将文件发回,并在输出中添加几个自定义标题。执行此操作的方法是使用Response.TransmitFile() 从您的 ASP.NET 应用程序显式发送文件,然后添加 Content Type 和 Content-Disposition 标头。

所以你需要使用下面的标题:

header('Content-Disposition: attachment; filename="filename.pdf"');

这里有一个例子可能对你有帮助:

http://www.west-wind.com/weblog/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET

【讨论】:

    【解决方案2】:

    更改标题值..

    前 header('Content-Disposition: attachment; filename="downloaded.pdf"')

    path = "path/to/file.pdf";
    $filename = "file.pdf";
    header('Content-Transfer-Encoding: binary');  // For Gecko browsers mainly
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
    header('Accept-Ranges: bytes');  // For download resume
    header('Content-Length: ' . filesize($path));  // File size
    header('Content-Encoding: none');
    header('Content-Type: application/pdf');  // Change this mime type if the file is not PDF
    header('Content-Disposition: attachment; filename=' . $filename);  // Make the browser display the Save As dialog
    

    【讨论】:

      【解决方案3】:

      他正在寻找的不是从主机下载东西时打开的保存对话。

      他正在寻找从客户端的文件系统中打开一个文件。您必须使用输入类型文件来执行此操作。但是您不会获得太多特权来使用 javascript 来操作它。

      而且没有办法通过标准的html来提示窗口的保存对话。

      我们需要 ActiveX 或 Flash 来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 2012-06-20
        相关资源
        最近更新 更多