我正在关注 Html5rocks 教程

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

我试图在切片文件示例中使用 readAsArrayBuffer 而不是 readAsBinaryString (因为我想读取 gif header 以查找文件分辨率)。但我被卡住了,因为 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 中,我出现在屏幕上:[object ArrayBuffer]

并在控制台日志上:未定义

在 Chromium 18 中,我进入控制台:未捕获的类型错误:无法读取 null 的属性“byteLenght”

最佳答案

有一个打字错误:

console.log(evt.target.result.byteLenght)
byteLenght 应该是 byteLength

关于javascript - FileReader.readAsArrayBuffer 返回为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11090659/

10-12 12:33