[英]How to force save as dialog box in firefox besides changing headers?
[英]save as dialog box in Firefox
我想在用户单击HTML按钮时显示“另存为”对话框。 我正在使用DOJO和JavaScript。 在IE中,document.exec可以提供帮助,但在Firefox中,需要对文件系统进行更改才能使用NSI。
任何想法将不胜感激。
您可以强制浏览器使用数据网址下载某些数据:
content = "This is the text for downloading";
window.location.href = "data:application/octet-stream,"+
encodeURIComponent(content);
这样做的主要问题是用户将无法选择文件名,并且生成的文件名是一些随机哈希。 如果您不介意使用Flash,则可以使用Downloadify ,这将使您对“保存”对话框有更多控制。
使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
是下载的大小,这是可选的,但是如果您希望用户看到下载的进度条,则必须提供Content-length
。
某些浏览器将显示“另存为”对话框,而其他浏览器仅将文件保存到用户的首选下载文件夹中。 您对将要发生的事情没有太多控制权。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.