点击下载文件按钮,获取后端返回接口,根据请求头自动解析文件名称,自动识别文件类型后缀名,如果中文是iso-8859-1格式转换为utf-8,否则下载不了.
clike
axios({
method: 'get',
url: 'http://your-backend-url/download',
responseType: 'blob',
}).then(response => {
// 获取请求头内容
const contentDisposition = response.headers['content-disposition'];
// 文件名处理、格式处理
const encodedFilename = contentDisposition.split('filename=')[1];
// utf-8格式处理
// const decodedFilename = decodeURIComponent(encodedFilename);
// iso-8859-1格式处理
const decodedFilename = decodeURIComponent(escape(encodedFilename));
// 创建一个 Blob 对象
const blob = new Blob([response.data], { type: response.headers['content-type'] });
// 创建一个 URL 对象
const url = window.URL.createObjectURL(blob);
// 创建一个链接元素并模拟点击以下载文件
const a = document.createElement('a');
a.href = url;
//文件名、后缀类型处理
a.download = decodedFilename;
document.body.appendChild(a);
a.click();
// 释放内存
window.URL.revokeObjectURL(url);
});