我有想要写入文件的数据,并打开一个文件对话框供用户选择保存文件的位置。如果它能在所有浏览器中工作就太好了,但它必须在Chrome中工作。我想在客户端完成。
基本上我想知道在这个函数里放什么
saveFile: function(data)
{
}
函数接收数据,让用户选择保存文件的位置,并在该位置用该数据创建一个文件。
如果有帮助的话,使用HTML也很好。
我有想要写入文件的数据,并打开一个文件对话框供用户选择保存文件的位置。如果它能在所有浏览器中工作就太好了,但它必须在Chrome中工作。我想在客户端完成。
基本上我想知道在这个函数里放什么
saveFile: function(data)
{
}
函数接收数据,让用户选择保存文件的位置,并在该位置用该数据创建一个文件。
如果有帮助的话,使用HTML也很好。
当前回答
这个项目在github上看起来很有前途:
https://github.com/eligrey/FileSaver.js
中的FileSaver.js实现了W3C saveAs() FileSaver接口 本机不支持的浏览器。
也可以看看这里的演示:
http://eligrey.com/demos/FileSaver.js/
其他回答
函数下载(文本,名称,类型){ 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。
对于最新的浏览器,如Chrome,你可以使用本教程中的文件API:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTENT, 5*1024*1024 /*5MB*/, saveFile, errorHandler);
这个项目在github上看起来很有前途:
https://github.com/eligrey/FileSaver.js
中的FileSaver.js实现了W3C saveAs() FileSaver接口 本机不支持的浏览器。
也可以看看这里的演示:
http://eligrey.com/demos/FileSaver.js/
不可能在创建文件之前选择保存文件的位置。但至少在Chrome中,仅使用JavaScript就可以生成文件。这是我创建CSV文件的一个老例子。用户将被提示下载它。不幸的是,这在其他浏览器中并不能很好地工作,尤其是IE。
<!DOCTYPE html>
<html>
<head>
<title>JS CSV</title>
</head>
<body>
<button id="b">export to CSV</button>
<script type="text/javascript">
function exportToCsv() {
var myCsv = "Col1,Col2,Col3\nval1,val2,val3";
window.open('data:text/csv;charset=utf-8,' + escape(myCsv));
}
var button = document.getElementById('b');
button.addEventListener('click', exportToCsv);
</script>
</body>
</html>
function SaveBlobAs(blob, file_name) {
if (typeof navigator.msSaveBlob == "function")
return navigator.msSaveBlob(blob, file_name);
var saver = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
var blobURL = saver.href = URL.createObjectURL(blob),
body = document.body;
saver.download = file_name;
body.appendChild(saver);
saver.dispatchEvent(new MouseEvent("click"));
body.removeChild(saver);
URL.revokeObjectURL(blobURL);
}