vue如何判断接口返回的是不是文件流
时间: 2023-09-07 11:11:27 浏览: 571
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
在 Vue 中判断接口返回的是不是文件流,可以通过检查响应的 Content-Type 来实现。一般情况下,返回文件流的 Content-Type 会是 "application/octet-stream" 或 "application/vnd.ms-excel" 等。
以下是一个示例:
```javascript
axios.get('/api/download', {
responseType: 'blob' // 以二进制流的形式接收响应数据
}).then(response => {
const contentType = response.headers['content-type']
if (contentType === 'application/octet-stream' || contentType === 'application/vnd.ms-excel') {
// 返回的是文件流
const blob = new Blob([response.data], { type: contentType })
const url = window.URL.createObjectURL(blob)
// 创建一个 <a> 标签,模拟点击下载
const link = document.createElement('a')
link.href = url
link.download = 'example.xlsx'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
} else {
// 返回的是其他类型的数据
console.log(response.data)
}
})
```
这里使用了 Axios 库来发送 HTTP 请求,并设置了 responseType 为 'blob',以便接收二进制流的数据。获取响应的 Content-Type 后,判断是否为文件流类型,如果是,则将二进制数据转换为 Blob 对象,并创建一个 <a> 标签模拟点击下载,否则就直接输出响应数据。
阅读全文