我有一个 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...
};
添加回答
举报
0/150
提交
取消