将上传文件转换为字节数组以发送到 Angular/Typescript 中的 API 请求

Lea*_*Net 5 javascript typescript angular

如何将上传的文件转换为Angular/Typescript中的字节数组?

组件.ts

 buildRequest(): CreateRequest { 
 var reader = new FileReader();  
    return {
      create: {
        fileData: this.reader.readAsArrayBuffer(this.fileToUpload)        
      }
    };
  }
Run Code Online (Sandbox Code Playgroud)

模型

export interface CreateRequest {
    create: {
      fileData: Uint8Array[]; // Also, is this correct representation of byte array?
    };
  }

Run Code Online (Sandbox Code Playgroud)

目前,当我将函数分配给 fileData 时出现错误ReadAsArrayBuffer-

“类型‘void’不可分配给类型‘Uint8Array[]’”

将字节数组发送到 API 请求的正确方法是什么?

Raf*_*zao -2

问题已经在这里得到解答了!

我相信该属性是字符串、blob 或任何属性。

export interface CreateRequest {
    create: {
      fileData: string|any;
    };
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,IO 函数是异步的(可能在任何语言中)!,你需要使用事件监听器。

reader.addEventListener('loadstart', handleEvent);
reader.addEventListener('load', handleEvent);
reader.addEventListener('loadend', handleEvent);
reader.addEventListener('progress', handleEvent);
reader.addEventListener('error', handleEvent);
reader.addEventListener('abort', handleEvent);
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/FileReader/load_event

如果您需要其他参考,希望您有所帮助!

https://nehalist.io/uploading-files-in-angular2/