axios content-disposition
时间: 2023-09-20 15:00:59 浏览: 213
vue + axios get下载文件功能
5星 · 资源好评率100%
axios的content-disposition是一个HTTP响应头,用于在服务器返回文件时指示文件名和类型。这个响应头通常用于下载文件时,告诉浏览器如何处理返回的文件。
通过使用axios发送HTTP请求,并在响应中访问`response.headers`属性,我们可以获取content-disposition头信息。这个头信息的值通常是一个字符串,格式为`attachment; filename=<filename>`。
使用axios下载文件时,可以通过使用这个头信息来指定文件名和文件类型。可以通过使用filename字段来设置文件名,这个文件名会成为浏览器的默认下载文件名。可以使用文件类型作为MIME类型,这将告诉浏览器如何处理下载的文件。
下面是一个使用axios下载文件并设置content-disposition的示例代码:
```javascript
axios.get(url, { responseType: 'blob' }).then(response => {
const headers = response.headers;
const disposition = headers['content-disposition'];
const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
const matches = filenameRegex.exec(disposition);
let filename = '';
if (matches != null && matches[1]) {
filename = matches[1].replace(/['"]/g, '');
}
// 获取MIME类型
const contentType = headers['content-type'];
// 创建一个下载链接
const url = window.URL.createObjectURL(new Blob([response.data]));
// 创建一个下载链接的DOM元素
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', filename);
// 将链接添加到DOM树,并模拟点击该链接进行下载
document.body.appendChild(link);
link.click();
});
```
在这个示例中,我们使用axios发送一个GET请求来下载文件,并设置响应类型为`blob`。然后,我们从响应头中获取content-disposition值,解析出其中的文件名信息,然后使用这个文件名信息来设置下载链接的浏览器下载属性。最后,我们将下载链接添加到DOM树中,并通过模拟点击触发浏览器下载文件。
总之,axios的content-disposition头信息在下载文件时非常有用,可以用来指定文件名和文件类型,以及告诉浏览器如何处理下载的文件。
阅读全文