我在qml中 用下面这段代码获取对网页发送get请求返回的二进制文件。let fetch =AJAX.fetch fetch("http://media-jiangxi-uz-yijia.jxoss.xstore.ctyun.cn/LF07/FACECONTROLPACK/3KSCA55502006GY/466e53165477637978737cdfc7c7f2e7?Signature=Sl5R%2BFlOSzYsZm4eVhLhRAoEV%2BU%3D&AWSAccessKeyId=t4tyhIuBkPHxmt5B69oy&Expires=1686196242") .then((res)=>{ let arrayBuffer = res.arrayBuffer(); tryTestImg=arrayBuffer ; 但是返回值被arrayBuffer()变成10进制的了,怎么改代码能让我获取能被图片形式显示的二进制文件,注意不能用Blob和FileReader
时间: 2024-04-21 22:26:13 浏览: 13
如果不能用 `Blob` 对象和 `FileReader` 对象,你可以尝试使用 `URL.createObjectURL()` 方法将获取到的二进制数据转换为一个可用于显示图片的 URL 地址。以下是示例代码:
```javascript
let fetch = AJAX.fetch;
fetch("http://media-jiangxi-uz-yijia.jxoss.xstore.ctyun.cn/LF07/FACECONTROLPACK/3KSCA55502006GY/466e53165477637978737cdfc7c7f2e7?Signature=Sl5R%2BFlOSzYsZm4eVhLhRAoEV%2BU%3D&AWSAccessKeyId=t4tyhIuBkPHxmt5B69oy&Expires=1686196242")
.then((res) => {
let blob = new Blob([res]);
let url = URL.createObjectURL(blob);
// 在 QML 中使用该 url 来显示图片
});
```
在 QML 中,可以通过设置 `source` 属性来加载该 URL:
```qml
Image {
source: url
}
```
需要注意的是,使用 `URL.createObjectURL()` 方法创建的 URL,需要在不需要使用该 URL 时通过 `URL.revokeObjectURL()` 方法进行释放,以避免内存泄漏。例如,在 QML 中可以在 `Component.onDestruction` 信号中释放该 URL:
```qml
Image {
source: url
Component.onDestruction: URL.revokeObjectURL(url)
}
```