繁体   English   中英

在Firefox中另存为对话框

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM