使用 JS 和 html5 从字符串创建文本文件

Create Text file from String using JS and html5

本文关键字:创建 文本 文件 字符串 JS html5 使用      更新时间:2023-09-26

我想从字符串创建一个文本文件。 目前我正在使用一个函数,它接受一个数组并将其变成一个字符串,然后使用该字符串我想创建一个用户下载的本地文本文件。我试过使用这种方法

   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();  }

我也更喜欢JS或HTML5答案。

提前谢谢你

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();

BlobBuilder 现已过时。 请改用这个:

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

我最终使用了这段代码。 它创建一个链接来下载文件的 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>

我建议你使用隐藏的iframe而不是window.open,使其成为"一种更干净的方法">

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

但是,Chrome(我认为 18+ (的 <a> 标签具有download属性,您可以指定文件名以及使用 url 的blob: