2012-06-18 45 views
4

我下面的教程HTML5ROCKSFileReader.readAsArrayBuffer回報爲空

http://www.html5rocks.com/en/tutorials/file/dndfiles/

,我試圖用readAsArrayBuffer代替readAsBinaryString在分割文件的例子(因爲我想讀GIF頭找到文件解析)。但我卡住,因爲evt.target.result(同時使用readAsBinaryString它是一個字符串)

有什麼想法嗎?

編輯:代碼

reader.onloadend = function(evt) 

{ 

    if (evt.target.readyState == FileReader.DONE) { // DONE == 2 
    document.getElementById('byte_content').textContent = evt.target.result; 
    console.log(evt.target.result.byteLenght) 
    document.getElementById('byte_range').textContent = 
     ['Read bytes: ', start + 1, ' - ', stop + 1, 
     ' of ', file.size, ' byte file'].join(''); 
    } 
}; 

if (file.webkitSlice) { 
    var blob = file.webkitSlice(start, stop + 1); 
} else if (file.mozSlice) { 
    var blob = file.mozSlice(start, stop + 1); 
} 
reader.readAsArrayBuffer(blob); 
} 

因此Firefox 13我在屏幕上得到:[對象ArrayBuffer]

和控制檯日誌:未定義

而在鉻18,我得到的控制檯: Uncaught TypeError:無法讀取屬性'byteLenght'爲空

+1

哪裏exactely你卡住了? [this](http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-slicing-files)是基本代碼。現在,你有什麼修改,你期望什麼,出了什麼問題? –

+0

@RobW我改變了reader.readAsBinaryString(blob);到eader.readAsArrayBuffer(blob),我期待得到ArrayBufferbut但我得到空。 – wonglik

+1

無法在Chromium 18中重現:http://jsfiddle.net/XDbnJ/我看到'[object arrayBuffer]'。在問題中包含*您的*代碼,包括有關您的瀏覽器和您的期望的詳細信息。 –

回答

5

有一個打字錯誤:

console.log(evt.target.result.byteLenght) 

byteLenght應該byteLength

+0

我已經在評論中提到過。但這不是問題的原因:這隻會記錄'undefined',不會拋出'TypeError'。 –

+2

是的,就是這樣。愚蠢的我。 – wonglik