get方法获取导出excel--后台导出

get调取接口需要传数组的时候如果和post方法一样直接传个数组的话,会变成&aa[]=1&aa[]=2&aa[]=3基本上差不多应该是这样的结果,导致你调取接口的时候报400啥的

正常的样式应该是&aa=1,2,3这样

问题:vue项目中,用axios封装请求数据时,get请求传递参数为数组时,get拼接url并不能把参数正确的传递过去,
解决:get传参需要前面自己转一下传参的格式

最初错误传参

 

 

 


转换传参格式

axios.get('/gateway/xxx', {
params: {
ID: 001,
provincesData: provinces+ '',
}
})
// 在参数后面加上( + ''),即可把数组变成字符串
// 请求变成 '.../user?ID=001&provincesData=1,2,3

 

所以最简单的方法直接后面填(+“”)变成string类型

接下来就是导出了

后台掉接口,返回一大串乱七八糟的东西反正看不懂就对了

 

 接下来砸门需要给这个东西进行处理

data就是后台返回来的着一大长串乱七八糟的

fileName就是文件名
export function exportMethod(data, fileName) {
  const link = document.createElement('a')
  let blob = new Blob([data], { type: 'application/vnd.ms-excel' })
  link.style.display = 'none'
  link.href = URL.createObjectURL(blob)
  link.download = fileName //下载的文件名
  document.body.appendChild(link)
  link.click()
  document.body.removeChild(link)
}

直接使用如果有依赖没装,装一下依赖,没有就直接下一步

如果直接这样用的话会出现一个什么问题呢

 

 文件是打不开的

解决办法呢,就是在接口处api文件下添加“responseType: 'blob'“这句话

export function exports(params) {
  return request({
    url: 'category/export',
    method: 'get',
    responseType: 'blob', //改变接收的值类型
    ContentType: 'application/x-www-form-urlencoded',
    params
  })
}

这样导出来的文件就能看了

posted @ 2021-12-07 16:03  一世^浮萍  阅读(639)  评论(0编辑  收藏  举报
……