js 怎么判断res.data数据类型是不是blob或者arraybuffer
时间: 2024-03-27 07:41:14 浏览: 221
在JavaScript中,可以使用Object.prototype.toString()方法来判断res.data的数据类型是否为Blob或者ArrayBuffer。具体代码如下:
```
if (Object.prototype.toString.call(res.data) === '[object Blob]') {
// res.data是Blob类型
} else if (Object.prototype.toString.call(res.data) === '[object ArrayBuffer]') {
// res.data是ArrayBuffer类型
} else {
// res.data不是Blob或ArrayBuffer类型
}
```
其中,Object.prototype.toString.call(res.data)会返回一个以"[object 类型]"的字符串形式表示res.data的类型信息。如果res.data是Blob类型,则返回"[object Blob]",如果res.data是ArrayBuffer类型,则返回"[object ArrayBuffer]",否则返回其他类型信息。
相关问题
let blob = new blob([res.data]
这是一个 JavaScript 中创建 Blob 对象的语句,其中 res.data 是一个数据源,可以是字符串、二进制数据等等。Blob 对象通常用于在客户端中存储大型的数据,例如图片、音频或视频文件等。它的构造函数接受一个数组参数,数组中的元素可以是字符串或 ArrayBuffer 等类型的数据。该语句的作用是将 res.data 转换为一个 Blob 对象,并将该对象赋值给变量 blob。
我在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
你可以将获取到的二进制数据转换为 Base64 编码的字符串,然后在 QML 中使用 `Image` 组件加载该字符串来显示图片。以下是示例代码:
```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 reader = new FileReader();
reader.onload = function() {
let base64Str = btoa(String.fromCharCode.apply(null, new Uint8Array(reader.result)));
// 在 QML 中使用该 base64Str 来显示图片
};
reader.readAsArrayBuffer(res);
});
```
其中,`btoa()` 函数可以将字符串转换为 Base64 编码的字符串,`Uint8Array` 可以将二进制数据转换为 8 位无符号整数数组。在 QML 中,可以通过设置 `source` 属性来加载该 Base64 编码的字符串:
```qml
Image {
source: "data:image/png;base64," + base64Str
}
```
阅读全文