我想从字符串创建一个文本文件。目前我正在使用一个函数,它接受一个数组并使其成为一个字符串然后使用该字符串我想创建一个用户下载的本地文本文件。 我尝试过使用这种方法
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答案。
提前谢谢
答案 0 :(得分:17)
将您的object
转换为JSON字符串。
var json_string = JSON.stringify(object, undefined, 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();
答案 1 :(得分:5)
BlobBuilder现已过时。请改用:
https://developer.mozilla.org/en-US/docs/Web/API/Blob#Blob_constructor_example_usage
答案 2 :(得分:4)
我最终使用此代码。它会创建一个链接来下载文件的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>
答案 3 :(得分:0)
我建议您使用隐藏的iframe
代替window.open
来使其成为“更清洁的方法”
并且我认为强制下载是text/octet-stream
而不是text/json
。据我所知,你不能这样设置文件名。
但是,Chrome(我认为18岁以上)有一个download
attribute for its <a>
tags,你可以指定文件的名称,并使用blob:
作为网址。