我可以让BLOB独立于浏览器吗?

时间:2017-03-20 10:17:43

标签: javascript file blob

根据帖子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

enter image description here

您是否知道如何使其与浏览器无关?

1 个答案:

答案 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>