在HTML / Javascript中从字符串变量创建大的可下载文件

时间:2015-07-27 15:12:02

标签: javascript html browser download

我创建了一个js脚本,我可以从字符串变量中下载文件:

window.alert("a");
document.getElementById("export-graphml").innerHTML += "<a id=\"dl\" download=\"graph.graphml\">Download</a>"
window.alert("b");
var vdl = document.getElementById("dl");
window.alert(data.length);
vdl.href = "data:text/plain," + encodeURIComponent(data);

它非常好用,直到我的字符串var(数据)不太大。当我的数据太大时,代码的最后一行会导致Chrome和Firefox崩溃,IE也没有反应。

我没有找到任何可能的限制大小的信息。

如果你有任何想法感谢分享它。

1 个答案:

答案 0 :(得分:0)

试试这个(适用于10 ie,以及所有现代浏览器)

    var createObjectURL = (window.URL || window.webkitURL || {}).createObjectURL || function(){}; 
    var blob = null;
    var content = "byte array or string";
    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.txt";
    a.innerHTML = "download file";
    document.body.appendChild(a);