zoukankan      html  css  js  c++  java
  • 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
      })
    }

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

  • 相关阅读:
    输入形如"a-b,b-c,b-d"的字符串,当作相邻路径,计算最远路径
    即时通信软件后端API文档
    Django中,使用redis作为缓存
    Django中,websocket实时通信设置概要
    在Django中,自定义User模型,使用token鉴权,实现注册、登录、修改密码等API
    Django中,用rest_framework写API
    偶尔练习一下,go语言做题目
    关于邮政储蓄卡内钱被盗的思考
    浅谈图片上传之剪切
    JavaScript学习笔记
  • 原文地址:https://www.cnblogs.com/yishifuping/p/15656657.html
Copyright © 2011-2022 走看看