如何使用HTML显示保存对话框

时间:2012-01-10 09:02:43

标签: javascript asp.net .net html

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

由于

3 个答案:

答案 0 :(得分:3)

更改标题值..

实施例 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

答案 1 :(得分:3)

通常,当您链接文件时,该文件将始终显示在浏览器内部,因为浏览器会加载该文件并根据文件扩展名自动确定内容类型。因此,当您点击像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 :(得分:-6)

从主机下载内容时,他所寻找的并不是一个开放的保存对话。

他希望从客户端的文件系统中打开一个文件。您必须使用输入类型文件才能执行此操作。但是你不会获得使用javascript来操纵它的特权。

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

我们需要ActiveX或Flash来实现它。