定义请求 ajax
export const createFileAPI = (url, method, data) => {
let config = {}
config.data = data
config.headers = {
'Cache-Control': 'no-cache',
'Content-Type': 'application/x-www-form-urlencoded'
}
config.responseType = 'blob' //设置头
return instance({
url,
method,
...config
})
}
保存文件
contestApi.downRank({"id":id}).then(res=>{ //调用ajax请求函数
// console.info(res) //请求response
// console.info(res.headers.toJSON())
// console.info(res.getHeader("Content-Disposition"))
var fileName = null; //文件名
// 获取文件名 后端设置
//response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
if(res.headers['Content-Disposition'])fileName = decodeURI(res.headers['Content-Disposition'].split(';')[1].split('=')[1])
//下载文件类型
var content = res.headers['content-type'];
let blob = new Blob([res.data], {type: content})
let objectUrl = URL.createObjectURL(blob) // 创建URL
const link = document.createElement('a')
link.href = objectUrl
// link.download = '.xlsx'// 自定义文件名
//这里是获取后台传过来的文件名
link.setAttribute("download",null)
link.click() // 下载文件
URL.revokeObjectURL(objectUrl) // 释放内存
})