我想在用户点击HTML按钮时显示“另存为”对话框。 我正在使用DOJO和JavaScript。 在IE中,document.exec来拯救,但在Firefox中,需要在文件系统中进行更改才能使用NSI。
任何想法都将受到赞赏。
答案 0 :(得分:1)
您可以强制浏览器使用数据网址下载一些数据:
content = "This is the text for downloading";
window.location.href = "data:application/octet-stream,"+
encodeURIComponent(content);
这个问题的主要问题是用户将无法选择文件名,生成的文件名是一些随机哈希值。如果您不介意使用Flash,可以使用Downloadify,这样可以更好地控制“保存”对话框。
答案 1 :(得分:0)
将HTML按钮href为未知文档类型。说 FileName.xxxblah 。
这将自动触发另存为对话框。
答案 2 :(得分:0)
这并不是你想要的,但我所知道的唯一可靠方式是在服务器上创建一个服务器端脚本,它将发送正确的标头。在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
是下载的大小,这是可选的,但如果您希望用户看到下载的进度条,则必须提供。
某些浏览器会显示另存为对话框,而其他浏览器只会将文件保存到用户首选的下载文件夹中。你无法控制将要发生的事情。