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

如何在javascript中将文件转换为字节流,javascript,Javascript,如何将文件转换为字节数组 另一种方法是在一点以下 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)

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

另一种方法是在一点以下

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
}
根据,如果
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
}
let file=new file(…)//这可能来自文件输入或其他来源
让fileReader=newFileReader();
readAsArrayBuffer(文件);
fileReader.onload=函数(ev){
常量数组=新的Uint8Array(ev.target.result);
常量fileByteArray=[];
for(设i=0;i
下面是一个实现,它承诺使用舒适:

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);
})
函数getByteArray(文件){ 返回新承诺(功能(解决、拒绝){ readAsArrayBuffer(文件); fileReader.onload=函数(ev){ 常量数组=新的Uint8Array(ev.target.result); 常量fileByteArray=[]; for(设i=0;i{ //你需要什么就做什么 控制台日志(byteArray); })
附言。
如果由于某种原因,您无法参考
ev.target
,请尝试改用
fileReader.result

您是否使用图像?请提供您已经尝试过的代码try this let byteArray=new Uint8Array(文件)此行显示错误。const result=ev.target.result;结果不是targetIt的属性它应该作为事件工作。target记录在documentation@SSSS中,请参阅我的更新答案。尝试使用fileReader。result@SSSS
fileReader.result
解决了这个问题吗?如果这个答案解决了你的任务,请将其标记为已接受。谢谢,是的。现在当然可以了。最后一件事是,我如何将这个字节数组转换成字符串??