Blob 对象 下载文件(vue,js)
import Cookie from 'js-cookie';
import axios from 'axios';
export default {
methods: {
exportReq (opts) {
// 域名自行设置
let domain = process.env.domain;
// 接口名称自行修改
let url = `${domain}/xxx/xxx.json`;
return new Promise((resolve, reject) => {
// 此处用的是axios请求
axios.defaults.headers['content-type'] = 'application/json;charset=UTF-8';
axios({
method: 'post',
url: url, // 请求地址
data: opts, // 参数
responseType: 'blob',
headers: {'_security_token': Cookie.get('_security_token')} // 带上token
}).then(
(response) => {
resolve(response.data);
let blob = new Blob([response.data], response.headers['content-type']); //获取并且设置下载文件的内容和类型
let fileName = decodeURI(response.headers['filename']);
// ie10 和ie11兼容
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
//释放内存
window.URL.revokeObjectURL(link.href);
}
},
(err) => {
reject(err);
}
);
});
},
exportFile() {
// 传入需要的参数
this.exportReq({idList: ids}).then(() => {
console.log('下载成功!')
})
}
}
}