如果数据是本地的——简单!
我们只使用window.URL.createObjectURL()。让我们设置一些全局变量...
//var response = Already defined by OP! Not sure what it is, but it's data to save.
var mimetype = "text/csv";
var filename = "purchase.csv";
现在我们只需通过 type 参数将标头设置为 window.URL.createObjectURL()...
a.href = window.URL.createObjectURL(new Blob([response], {
encoding: "UTF-8",
type: mimetype + ";charset=UTF-8",
}));
如果数据在 WEB 上 -- 仍然很简单,只是更多的努力!
我们可以通过XMLHTTPRequest()下载文件数据,window.URL.createObjectURL()将数据转换为带有MIME类型头的blob类型,然后正常设置a.download = filename;和a.click();。
一个用于将文件数据直接下载到 JavaScript 环境的抽象函数...
function load(url, callback) {
var xhr = new XMLHTTPRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) callback(xhr.responseText);
};
xhr.open("GET", url, true);
}
然后下载数据,建立链接,然后点击:
load("site.com/t.txt", function (contents) {
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob([response], {
encoding: "UTF-8",
type: mimetype + ";charset=UTF-8",
}));
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
});