“另存为”对话框

save as dialog box in Firefox

本文关键字:另存为 对话框      更新时间:2023-09-26

我想在用户单击HTML按钮时显示另存为对话框。我正在使用DOJO和JavaScript。在IE文档中。exec来拯救,但在Firefox中,需要修改文件系统才能使用NSI。

可以使用data url强制浏览器下载一些数据:

content = "This is the text for downloading";
window.location.href = "data:application/octet-stream,"+
          encodeURIComponent(content); 

这样做的主要问题是用户将无法选择文件名,并且生成的文件名是一些随机散列。如果你不介意使用Flash,你可以使用下载,这将给你更多的控制保存对话框。

让HTML按钮href为未知文档类型。说 FileName.xxxblah

这将自动触发另存为对话框。

这不是你想要的,但唯一的可靠的我知道的方式是在服务器上创建一个服务器端脚本,将发送正确的头。在PHP中是这样做的:

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="mydocument.csv";' );
header('Content-length: '.(int)strlen($csvData));
print($csvData);

Content-type是文档的"mime类型",为了与某些浏览器兼容,重要的是它与文件名的扩展名完全匹配。

Content-Disposition: attachment指示浏览器下载页面,即使它通常不会为mime类型这样做,并且您可以提供文件名。

Content-length是下载的大小,这是可选的,但如果你想让用户看到下载的进度条,它必须提供。

有些浏览器会显示另存为对话框,而其他浏览器则会简单地将文件保存到用户首选的下载文件夹中。你无法控制将要发生什么