使用 ajax Content-Disposition:attachment 怎么下载
时间: 2024-05-13 20:16:40 浏览: 126
使用 AJAX 请求下载文件时,可以设置 Content-Disposition 头部信息为 attachment ,以提示浏览器下载文件而不是直接在浏览器中打开文件。具体实现可以参考以下代码:
```
function downloadFile(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
var contentDispositionHeader = xhr.getResponseHeader('Content-Disposition');
var fileName = 'unknown';
if (contentDispositionHeader) {
var fileNameMatch = contentDispositionHeader.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
if (fileNameMatch && fileNameMatch[1]) {
fileName = fileNameMatch[1].replace(/['"]/g, '');
}
}
var blob = new Blob([xhr.response], { type: 'application/octet-stream' });
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
}
};
xhr.send();
}
```
其中,`url` 为文件的下载链接,`fileName` 为文件名,`xhr.getResponseHeader('Content-Disposition')` 可以获取响应头的 Content-Disposition 信息,`window.URL.createObjectURL(blob)` 可以将 blob 对象创建为 URL,然后设置 `link.href` 为该 URL,最后触发 `link.click()` 实现下载。
阅读全文