javascript 实现下载文件,服务端返回二进制文件流,但是这个文件流中的内容为空,如何判断
时间: 2023-08-09 21:11:21 浏览: 287
前端 javascript 实现文件下载的示例
5星 · 资源好评率100%
在 JavaScript 中实现下载文件时,服务端返回的二进制文件流中如果内容为空,可以通过以下方式进行判断:
1. 使用 XMLHttpRequest 对象发送请求,当 readyState 变为 4 时,判断 status 是否为 200。
2. 在获取到响应后,使用 responseText 属性获取响应内容,然后使用 Blob 对象创建一个二进制文件对象。
3. 判断二进制文件对象的 size 属性是否为 0,如果为 0,则说明返回的文件流内容为空。
以下是一个示例代码:
```javascript
var xhr = new XMLHttpRequest();
xhr.open("GET", "example.com/file.bin", true);
xhr.responseType = "arraybuffer";
xhr.onload = function () {
if (xhr.readyState === xhr.DONE) {
if (xhr.status === 200) {
var blob = new Blob([xhr.response], { type: "application/octet-stream" });
if (blob.size === 0) {
console.log("文件流内容为空");
} else {
// 文件流内容不为空,进行下载操作
var url = URL.createObjectURL(blob);
var link = document.createElement("a");
link.href = url;
link.download = "file.bin";
document.body.appendChild(link);
link.click();
}
}
}
};
xhr.send();
```
这里使用了 XMLHttpRequest 对象发送 GET 请求,并且设置响应类型为 arraybuffer。在获取到响应后,使用 Blob 对象创建一个二进制文件对象,然后判断其 size 属性是否为 0。如果为 0,则说明返回的文件流内容为空。
阅读全文