为了账号安全,请及时绑定邮箱和手机立即绑定

create-react-app javascript 将文件转换为 Uint8Array

create-react-app javascript 将文件转换为 Uint8Array

缥缈止盈 2022-05-26 16:40:46
我有一个 create-react-app 可以更新连接的蓝牙设备的固件。为此,我需要将固件文件 (.zip) 转换为 Uint8Array。固件文件本地保存在我的 public/ 文件夹中所以我尝试使用这个函数来提取这些字节:var fimware_zip = process.env.PUBLIC_URL + '/ZioV8_1.2.7.zip'    this.loadFile(fimware_zip)将 loadFile 定义为:  // Load a file, set the bytes to firmware_byte_array  loadFile = async (my_file) => {    console.log(my_file)    var fr = new FileReader();    fr.onload = (e) =>    {       var arrayBuffer = e.target.result;      var array = new Uint8Array(arrayBuffer);      this.setState({ firmware_byte_array: array})    }    fr.readAsArrayBuffer(my_file);  }但是我收到以下错误:Unhandled Rejection (TypeError): Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'.我已经搜索过如何将文件转换为 Blob 类型的高低搜索,但我就是做不到。我还尝试将 .zip 文件放在 src/ 文件夹中并使用import fimware_zip from './ZioV8_1.2.7.zip'但这也行不通任何帮助将不胜感激
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

您只能readAsArrayBuffer在 Blob 或 File 对象(例如从input type="file"元素中获取的对象)上使用。


我假设此应用程序涉及某种服务器进程,在这种情况下您可以使用fetch:


const loadFile = async (my_file) => {

    const response = await fetch(my_file);

    if (!response.ok) {

        throw new Error("HTTP error " + response.status);

    }

    const array = new Uint8Array(await response.arrayBuffer());

    // ...use or return `array` here...

};


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 381 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信