我有想要写入文件的数据,并打开一个文件对话框供用户选择保存文件的位置。如果它能在所有浏览器中工作就太好了,但它必须在Chrome中工作。我想在客户端完成。

基本上我想知道在这个函数里放什么

saveFile: function(data)
{
}

函数接收数据,让用户选择保存文件的位置,并在该位置用该数据创建一个文件。

如果有帮助的话,使用HTML也很好。


当前回答

Javascript有一个文件系统API。如果你可以让这个功能只在Chrome中工作,一个好的起点是:http://www.html5rocks.com/en/tutorials/file/filesystem/。

其他回答

在控制台中尝试了这一点,并且它可以工作。

var aFileParts = ['<a id="a"><b id="b">hey!</b></a>'];
var oMyBlob = new Blob(aFileParts, {type : 'text/html'}); // the blob
window.open(URL.createObjectURL(oMyBlob));

Javascript有一个文件系统API。如果你可以让这个功能只在Chrome中工作,一个好的起点是:http://www.html5rocks.com/en/tutorials/file/filesystem/。

这个项目在github上看起来很有前途:

https://github.com/eligrey/FileSaver.js

中的FileSaver.js实现了W3C saveAs() FileSaver接口 本机不支持的浏览器。

也可以看看这里的演示:

http://eligrey.com/demos/FileSaver.js/

对于最新的浏览器,如Chrome,你可以使用本教程中的文件API:

window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTENT, 5*1024*1024 /*5MB*/, saveFile, errorHandler);

函数下载(文本,名称,类型){ var a = document.getElementById("a"); var file = new Blob([text], {type: type}); a.href = URL.createObjectURL(文件); A.download = name; } <a href="" id="a">点击这里下载你的文件</a> <button onclick="download('file text', 'myfilename.txt', 'text/plain')"> < / >创建文件按钮

然后,您可以通过将download属性放在锚标记上来下载文件。

我喜欢这个比创建一个数据url更好的原因是,你不需要做一个很大很长的url,你可以只生成一个临时的url。