我正在尝试在HTML中使用BlobBuilder和FileWriter API将数据写入文件。 我的问题是,如果我使用写入功能两次,我会收到错误。下列 代码执行正常:
var bb = new window.WebKitBlobBuilder();
bb.append('LOREL');
outWriter.write(bb.getBlob('text/plain'));
但如果我改变如下(尝试写两次)
var bb = new window.WebKitBlobBuilder();
bb.append('LOREL');
outWriter.write(bb.getBlob('text/plain'));
bb.append('LOREL');
outWriter.write(bb.getBlob('text/plain'));
我收到错误。错误代码为:INVALID_STATE_ERR
任何帮助都将不胜感激。
答案 0 :(得分:2)
问题是FileWriter.write()
是异步的,并且您在第一次写入完成之前尝试将更多数据写入文件。根据{{3}},如果FileException
,则应抛出readyState==WRITING
。可能你的情况发生了什么。你需要这样的东西:
var bb = new window.WebKitBlobBuilder();
bb.append('LOREL');
outWriter.onwrite = function(e) {
bb.append('LOREL');
outWriter.write(bb.getBlob('text/plain'));
};
outWriter.write(bb.getBlob('text/plain'));
另外,我希望你的代码片段只是一个例子而你实际上并没有附加,写作,追加,写作。否则,请使用一个write()
:
var bb = new window.WebKitBlobBuilder();
bb.append('LOREL');
bb.append('LOREL');
outWriter.write(bb.getBlob('text/plain'));