使用JS和HTML5从字符串创建文本文件(Create Text file from String

2019-06-24 13:50发布

我想创建一个字符串的文本文件。 目前我使用一个函数,它接受一个数组,使得它成为一个字符串,然后使用该字符串我想创建一个本地文本文件的用户下载。 我已经使用这种方法试着

   function createFile(){ //creates a file using the fileLIST list 
    var output= 'Name \t Status\n'+ fileLIST[0][0].name+'\t'+fileLIST[0][1]+'\n';
    var Previous = fileLIST[0];
    for (var i=1; i<fileLIST.length; i++)
        if (fileLIST[i][1] =='none' || fileLIST[i][1] == Previous[1])
            continue
        else {
            Previous = fileLIST[i]
            output = output + fileLIST[i][0].name +'\t'+fileLIST[i][1] + '\n';}

    window.open("data:text/json;charset=utf-8," + escape(output));//should create file
    display();  }

我使用的是Chrome浏览器。 此外,我宁愿JS或HTML5的答案。

先感谢您

Answer 1:

转换你的object到JSON字符串。

var json_string = JSON.stringify(object, undefined, 2);

笔记:

  1. 如果你已经有了一个字符串,跳过上面的步骤。
  2. 如果你不希望它被很好地格式化,删掉了, undefined, 2

创建一个下载链接并点击:

var link = document.createElement('a');
link.download = 'data.json';
var blob = new Blob([json_string], {type: 'text/plain'});
link.href = window.URL.createObjectURL(blob);
link.click();


Answer 2:

BlobBuilder现在已经过时。 使用这个来代替:

https://developer.mozilla.org/en-US/docs/Web/API/Blob#Blob_constructor_example_usage



Answer 3:

我结束了使用此代码代替。 它创建了一个链接,下载文件的URL。

     window.URL = window.webkitURL || window.URL;
    window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||       window.MozBlobBuilder;
    file = new WebKitBlobBuilder();
    file.append(output); 
    var a = document.getElementById("downloadFile");
    a.hidden = '';
    a.href = window.URL.createObjectURL(file.getBlob('text/plain'));
    a.download = 'filename.txt';
    a.textContent = 'Download file!';
}

同时这种方式增加较少的网站使之成为连接速度慢更轻的网站。 我的HTML有一个空div在此追加到。

   <div class ='paginationLIST' id='pagination'></div>


Answer 4:

我建议你使用一个隐藏iframe ,而不是window.open使“清洁方法”

我相信这是text/octet-stream ,而不是text/json强制下载。 而据我所知,你不能设置文件名这种方式。

然而,铬(18+我认为)有一个download它的属性<a>标签 ,你可以使用沿着指定的文件名blob:为URL。



文章来源: Create Text file from String using JS and html5