在html5中使用filewriter api写两次会导致错误

时间:2011-06-16 17:02:36

标签: javascript html5 google-chrome

我正在尝试在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

任何帮助都将不胜感激。

1 个答案:

答案 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'));