通过FileReader读取文件后无法提取Uint8Array

时间:2018-07-18 14:03:00

标签: javascript arrays angular

我正在尝试为从Angular应用程序中选择的文件提取byteArray。我正在使用FileReader类的“ readAsArrayBuffer”属性来获取文件作为数组缓冲区,其输出如下:

enter image description here

下面是上面输出的代码示例:

onFileSelected(event) 
{


if (event.target.files && event.target.files.length > 0)

{
  let reader = new FileReader();
  if(event.target.files && event.target.files.length > 0) {
    let file = event.target.files[0];
    reader.readAsArrayBuffer(file);
    reader.onload = () => {

    this.form.get('file').setValue({
        filename: file.name,
        filetype: file.type,
        value:reader.result

      })
    };
  }

}

else
{
  console.log("Error");
  }
}

我正试图从下面的语句中获取Uint8Array:

值:String.fromCharCode.apply(空,新的Uint8Array(reader.result))

下面是相同的代码。与上面相同,只是对“值”属性进行了较小的更改。

  onFileSelected(event) 
{


if (event.target.files && event.target.files.length > 0)

{
  let reader = new FileReader();
  if(event.target.files && event.target.files.length > 0) {
    let file = event.target.files[0];
    console.log(file);
    reader.readAsArrayBuffer(file);
    reader.onload = () => {

    this.form.get('file').setValue({
        filename: file.name,
        filetype: file.type,
        value:String.fromCharCode.apply(null, new Uint8Array(reader.result))

      })
    };
  }

}

else
{
  console.log("Error");
  }
}

其输出如下。这是一个错误:

enter image description here

我尝试执行以下线程给出的解决方案,但未成功:

Maximum call stack size exceeded error

我需要将我的文件作为字节数组,以便可以将其传递给仅将文件作为byteArray接受的REST API。谢谢!

0 个答案:

没有答案