所以基本上正在发生的事情是:
1)按钮点击
2),它返回一个JSON arrya
3)循环通过阵列外部请求并保存每个元件在一个文件(客户端)
谷歌浏览器扩展名保存在客户端文件
问题是console.log(fileName)
只打印最后一个元素。所以我得到n
次最后的文件名。
有没有办法欺骗window.webkitRequestFileSystem
做我所需要的或可能有解决方法。
document.getElementById("reload-files").onclick = function() {
reloadFiles(localStorage["user_mail"]);
}
function reloadFiles (email) {
var files = [];
var xhr = new XMLHttpRequest();
var url = "...url...&email="+escape(email);
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
resp = JSON.parse(xhr.responseText);
for (var i = resp.length - 1; i >= 0; i--) {
fileName = resp[i].name;
fileData = resp[i].data;
files.push(fileName);
// save file
window.webkitRequestFileSystem(window.PERSISTENT, resp[i].data.length, writeToFileStorage, errorHandler);
};
localStorage["files"] = JSON.stringify(files);
}
}
xhr.send();
}
function writeToFileStorage(fs) {
fs.root.getFile(fileName, {create: true}, function(fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log(fileName);
};
var blob = new Blob([fileData], {type: 'application/javascript'});
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
你试图存储在你不能存储在'localStorage' /'chrome.storage'文件系统中的文件夹 – megawac
我可以使用localstorage,但数据可能超过5 MB,所以我必须创建文件。 – waaadim
没想到这是不正确的 – megawac