axios接收application/octet-stream,blob格式下载,添加下载文件
时间: 2023-07-25 15:41:09 浏览: 396
好的,您想要添加下载文件,是指将下载的文件保存到本地设备中吗?如果是的话,可以使用以下代码实现:
```javascript
axios({
url: 'your_file_url',
method: 'GET',
responseType: 'blob'
}).then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'your_file_name');
document.body.appendChild(link);
link.click();
});
```
在上面的代码中,我们首先使用 Axios 发起 GET 请求,并将 `responseType` 设置为 `blob`,这样我们可以接收到一个 Blob 格式的文件。然后,我们将接收到的文件转换成 URL 对象,并创建一个 `<a>` 标签,将其 `href` 属性设置为 URL 对象的地址,将 `download` 属性设置为你想要的文件名,然后将该标签添加到 DOM 中,并模拟点击该标签,从而触发浏览器的文件下载功能。
希望这可以解决您的问题,如果还有其他问题,请继续提问。
相关问题
axios接收application/octet-stream,blob格式下载,添加下载名称
好的,如果您想要添加下载名称,可以在响应头中设置 `Content-Disposition` 属性,具体代码如下:
```javascript
axios({
url: 'your_file_url',
method: 'GET',
responseType: 'blob'
}).then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
const contentDisposition = response.headers['content-disposition'];
const fileNameMatch = contentDisposition && contentDisposition.match(/filename="(.+)"/);
const fileName = fileNameMatch && fileNameMatch[1] ? fileNameMatch[1] : 'unknown';
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
});
```
在上述代码中,我们首先发送一个 GET 请求,并将 `responseType` 设置为 `blob`,以便我们可以接收到一个 Blob 格式的文件。然后,我们创建一个 `<a>` 标签,并将其 `href` 属性设置为 URL 对象的地址。接下来,我们从响应头中获取 `Content-Disposition` 属性,并使用正则表达式提取出文件名。如果无法提取出文件名,则将文件名设置为 "unknown"。最后,我们将文件名作为下载属性的值,并将该标签添加到 DOM 中,并模拟点击该标签,从而触发浏览器的文件下载功能。
希望这可以解决您的问题,如果还有其他问题,请继续提问。
axios接收application/octet-stream并下载
要使用axios下载二进制数据,可以通过设置responseType为'arraybuffer',然后将响应数据作为ArrayBuffer对象处理。例如:
```
axios({
method: 'get',
url: '/download',
responseType: 'arraybuffer'
}).then(response => {
const blob = new Blob([response.data], { type: 'application/octet-stream' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = 'file.bin'
link.click()
})
```
这里我们设置了响应的responseType为'arraybuffer',然后在响应返回时,将响应的数据作为ArrayBuffer对象处理。接下来,我们使用Blob对象将ArrayBuffer转换为二进制数据,并创建一个URL对象来下载文件。最后,我们创建一个a标签,设置下载链接并模拟点击,实现文件下载。
阅读全文