原理和下载车贴二维码一样
调用接口
this.$service.downloadCarInfo(this.searchData, this.$store.getters.token, 'download.xlsx')
处理数据
import { fetch } from '@/utils/fetch'
import axios from 'axios'
import baseUrl from '@/config/base-url'
import api from '@/service/api/'
import { download } from '@/utils/common'
let downloadCarInfo = (params, accessToken, fileName) => {
// file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承。
// 所以, 在大多数情况下,blob 对象和 file 对象可以用在同一个地方
axios({
baseURL: baseUrl || '/',
method: "get",
url: api.DOWNLOAD_CAR_INFO,
params: params,
responseType: "blob",
headers: {
"Content-Type": "application/json;charset=utf-8",
accessToken: accessToken
}
}).then(res => {
download(fileName, res.data);
});
}
export const download = ((fileName, data) => {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function(fileName, data) {
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
})()
注释:其实没必要写成立即执行函数
网友评论