根据帖子here
我可以将js中的变量(比如用户填写的表格)下载到浏览器中的文件中 (我知道这不是要走的路,服务器必须为我的请求做到这一点)
我正在使用此代码:
textToSave = "Hello"
var createObjectURL = (window.URL || window.webkitURL || {}).createObjectURL || function(){};
var blob = null;
var content = textToSave;
var mimeString = "application/octet-stream";
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
if(window.BlobBuilder){
var bb = new BlobBuilder();
bb.append(content);
blob = bb.getBlob(mimeString);
}else{
blob = new Blob([content], {type : mimeString});
}
var url = createObjectURL(blob);
var a = document.createElement("a");
a.href = url
a.download = "file.csv";
a.innerHTML = "download file";
a.click();
并且在Chrome中工作正常,但是当我在IE-11中尝试时,我得到一个BLOB
您是否知道如何使其与浏览器无关?
答案 0 :(得分:1)
不要担心使用对象URL - 它们在IE中并不完全支持。建议使用FileSaver.js,然后一旦获得blob,以下内容适用于任何相关的浏览器:
function saveBlob(){
var theBlob = //... your stuff here
saveAs(blob, 'file.csv');
}
从你的主播中调用它:
<a href="#" onclick="saveBlob();">download file</a>