gpt4 book ai didi

javascript - 如何在javascript中将文件转换为字节流

转载 作者:行者123 更新时间:2023-11-30 19:32:00 26 4
gpt4 key购买 nike

如何将文件转换为字节数组。

下面的另一种方式

let file = new File([myBlob], "name");

文件需要转换成字节流

最佳答案

您或许可以尝试使用浏览器中提供的 FileReader API。

let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();

fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const result = ev.target.result;
console.log(result); // here it is
}

根据 this answer ,如果 readAsArrayBuffer 的结果对您不起作用,您可能需要使用 new Uint8Array 将其转换为真正的 byte[]。这是上述代码的扩展版本:

let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();

fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
console.log(array); // here it is
}

这里是为了舒适使用而包装在 promise 中的实现:

function getByteArray(file) {
return new Promise(function(resolve, reject) {
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
resolve(array); // successful
}
fileReader.onerror = reject; // call reject if error
})
}

//usage
let file = new File(...)
getByteArray(file).then((byteArray) => {
// do whatever you need
console.log(byteArray);
})

附言如果由于某种原因您无法引用 ev.target,请尝试使用 fileReader.result

关于javascript - 如何在javascript中将文件转换为字节流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com