但是我后端返回的是Result<ResponseEntity<byte[]>>
时间: 2023-12-07 17:03:49 浏览: 259
如果你的后端返回的是`Result<ResponseEntity<byte[]>>`,那么你需要先获取到`ResponseEntity<byte[]>`对象,然后再按照上面的方法来处理。
你可以按照以下步骤:
1.在axios的请求中设置responseType为“arraybuffer”。
2.在axios的请求中设置headers的“Accept”为“application/octet-stream”,表示接收二进制数据。
3.在axios的响应拦截器中获取到`ResponseEntity<byte[]>`对象,并将其中的二进制数据转换为Blob对象。
4.使用FileSaver.js库将Blob对象转换为文件并下载。
下面是一个示例代码:
```
import axios from 'axios'
import FileSaver from 'file-saver'
axios({
url: '/download',
method: 'get',
responseType: 'arraybuffer',
headers: {
'Accept': 'application/octet-stream'
}
}).then(response => {
const result = response.data
const responseEntity = result.data
const blob = new Blob([responseEntity.body], {type: 'application/octet-stream'})
FileSaver.saveAs(blob, 'file.xlsx')
}).catch(error => {
console.log(error)
})
```
在这个示例代码中,我们首先获取到axios的响应对象,然后从响应对象中获取到`Result<ResponseEntity<byte[]>>`对象,再从中获取到`ResponseEntity<byte[]>`对象。接着,我们将其中的二进制数据转换为Blob对象,最后使用FileSaver.js库将Blob对象转换为文件并下载。
阅读全文