api
// 下载测试
export const downLoadExcal = (data) => {
return instancejava.get("/sso/download",{
data,responseType: ‘blob‘ // 需要制定类型
});
};
index.vue文件
downLoad(){
downLoadExcal().then(res=>{ // 接口
let fileName = res.headers[‘content-disposition‘].split(‘=‘)[1] // 命名
let suffix = fileName.slice(fileName.length-5,fileName.length) // 切取.xsls后缀
let now = new Date().getTime(); // 时间戳
fileName = now+suffix // 重命名=>时间戳+文件后缀
let objectUrl = URL.createObjectURL(new Blob([res.data])) // 文件地址
const link = document.createElement(‘a‘) //创建a标签用于文件下载
link.download = fileName // 文件名
link.href = objectUrl //赋值下载路径
link.click() //点击a标签触发
document.body.removeChild(link);//删除a标签
}).catch((err)=>{
console.log(err)
})
}
网上还有另外一个方法
let blob = new Blob([res], {type: "application/vnd.ms-excel"});//type是文件类,详情可以参阅blob文件类型
let objectUrl = URL.createObjectURL(blob);//生成下载链接
let a=document.createElement(‘a‘);//创建a标签用于文件下载
a.href=objectUrl;//赋值下载路径
a.download=‘数据表格.xls‘;//下载的文件名称(非必填)
document.body.appendChild(a);//插入DOM树
a.click();//点击a标签触发
document.body.removeChild(a);//删除a标签
服务端的参数:
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=" + fileName + EXCEL03_SUFFIX);