定义请求 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) // 释放内存
})