来了个下载文件的需求,使用blob开发完,测试的时候发现IE出现兼容问题,无法下载,下面是问题解决之后的代码。
发起请求的封装:
这里省略了一部分内容,重点是获取下载文件的文件名称
import axios from 'axios'
const ek = {
}
// 请求发起时的拦截器
// todo
// 请求完成后的拦截器
axios.interceptors.response.use(
// IE 8-9
if (response.data == null && response.config.responseType === 'json' && response.request.responseText != null) {
// todo
}
// 获取文件名称
if (response.headers['content-disposition']) {
const filename = response.headers['content-disposition'].match(/filename=(.*)/)[1]
return {
response, filename: filename }
} else {
return response
}
},
error => {
return new Promise.reject(error) // response
}
)
//axios 封装
ek.request = opts => {
// 公共参数
const publicParams = {
};
const data = opts.data || {
};
const options = {
method: opts.method || 'get',
url: opts.url,
params: Object.assign(publicParams, data), // get请求时带的参数
data: qs