将 input=file 转换为字节数组

新手上路,请多包涵

我尝试将通过输入文件获得的文件转换为 byte[]。我尝试使用 FileReader,但我一定错过了一些东西:

 var bytes = [];
var reader = new FileReader();
reader.onload = function () {
   bytes = reader.result;
};
reader.readAsArrayBuffer(myFile);

但最后,我的 bytes var 不包含字节数组。

我看到这篇文章: Getting byte array through input type = file but it doesn’t ends with a byte[], and readAsBinaryString() is deprecated

我想念什么?

原文由 Lempkin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

面对类似的问题,“reader.result”确实没有以“byte[]”结束。所以我将它转换为 Uint8Array 对象。这也不是一个完美的“byte[]”,所以我不得不从中创建一个“byte[]”。这是我解决这个问题的方法,对我来说效果很好。

 var reader = new FileReader();
var fileByteArray = [];
reader.readAsArrayBuffer(myFile);
reader.onloadend = function (evt) {
    if (evt.target.readyState == FileReader.DONE) {
       var arrayBuffer = evt.target.result,
           array = new Uint8Array(arrayBuffer);
       for (var i = 0; i < array.length; i++) {
           fileByteArray.push(array[i]);
        }
    }
}

‘fileByteArray’ 是你要找的。看到评论,似乎你也做了同样的事情,仍然想分享这个方法。

原文由 Santosh Ch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏