2011-06-16 64 views
2

我試圖在HTML中使用BlobBuilder和FileWriter API將數據寫入文件。 我的問題是,如果我使用兩次寫入功能,我得到一個錯誤。下面 代碼執行OK:在html5中使用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

任何幫助,將不勝感激。

回答

2

問題是FileWriter.write()是異步的,而您正嘗試在第一次寫入完成之前向文件寫入更多數據。根據the spec,如果readyState==WRITING應該引發FileException。你的情況可能發生了什麼。你需要的東西,如:

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