使用 JavaScript 创建和保存文件
2022-08-29 23:53:39
我有要写入文件的数据,并打开文件对话框,供用户选择保存文件的位置。如果它可以在所有浏览器中工作,那就太好了,但它必须在Chrome中工作。我想在客户端执行此操作。
基本上我想知道在这个函数中放什么:
saveFile: function(data)
{
}
其中,函数接收数据,让用户选择保存文件的位置,并在该位置使用该数据创建一个文件。
使用HTML也很好,如果这有帮助的话。
我有要写入文件的数据,并打开文件对话框,供用户选择保存文件的位置。如果它可以在所有浏览器中工作,那就太好了,但它必须在Chrome中工作。我想在客户端执行此操作。
基本上我想知道在这个函数中放什么:
saveFile: function(data)
{
}
其中,函数接收数据,让用户选择保存文件的位置,并在该位置使用该数据创建一个文件。
使用HTML也很好,如果这有帮助的话。
Awesomeness01对代码的一个非常小的改进(不需要锚点标签),并按照trueimage的建议(支持IE)进行了添加:
// Function to download data to a file
function download(data, filename, type) {
var file = new Blob([data], {type: type});
if (window.navigator.msSaveOrOpenBlob) // IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
}
经测试可在 Chrome、FireFox 和 IE10 中正常工作。
在Safari中,数据在新选项卡中打开,必须手动保存此文件。
function download(text, name, type) {
var a = document.getElementById("a");
var file = new Blob([text], {type: type});
a.href = URL.createObjectURL(file);
a.download = name;
}
<a href="" id="a">click here to download your file</a>
<button onclick="download('file text', 'myfilename.txt', 'text/plain')">Create file</button>
然后,您可以通过将下载属性放在锚点标记上来下载文件。
我喜欢这个比创建数据URL更好的原因是,您不必制作一个大的长URL,您可以只生成一个临时URL。