【问题标题】:Create big downloable file from string variable in HTML/Javascript从 HTML/Javascript 中的字符串变量创建大的可下载文件
【发布时间】:2015-07-27 15:12:02
【问题描述】:

我创建了一个 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 没有反应。

我在任何地方都没有找到任何关于可能的大小限制的信息。

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

【问题讨论】:

  • 通常 URI 的最大长度为 2083 个字符。所以这就是你对这种方法的限制。
  • @oxguy3 好的,谢谢,我怎样才能替代从大字符串变量中下载文件?
  • @elpha01 为什么不是单行文本文件并分块读取?
  • @Obj3ctiv3_C_88 你的意思是把文本分成几块?但是我可以让它在一个文件中下载吗?

标签: javascript html browser download


【解决方案1】:

试试这个(适用于 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);

【讨论】:

  • 谢谢,它有效。有几个错误:它是a.download,你忘记了'n'。 a.innerText 对我不起作用我使用 a.innerHtml。而且您不使用 url 变量,所以我添加了 a.href = url.
猜你喜欢
  • 1970-01-01
  • 2014-10-14
  • 2011-01-06
  • 2020-08-19
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多