zoukankan      html  css  js  c++  java
  • 后端返回文件流,前端下载EXCEL,CSV文件的处理

    后端返回的是文件流,前端一般会用blob处理,最重要的一步是在请求里要标明:responseType:'blob',将返回的文件流转为blob
    axios({
      url: '下载接口URL',
      method: 'post',
      responseType: 'blob'
    }).then((res) => {
      // data就是接口返回的文件流
      let data = res.data
      if (data) {
     // 处理文件名
        let fileName = ''
        let attrs = res.headers['content-disposition'].split(';')
        for (let i = 0, l = attrs.length; i < l; i++) {
          let temp = attrs[i].split('=')
          if (temp.length > 1 && temp[0] === 'fileName') {
            fileName = temp[1]
            break
          }
        }
        fileName = decodeURIComponent(fileName)
     
        // 获取数据类型
        let type = res.headers['content-type'].split(';')[0]
     // type就是文件的mime类型,一般接口会返回。csv文件的mime一般采用text/csv
        let blob = new Blob([res.data], { type: type })
        const a = document.createElement('a')
     
        // 创建URL
        const blobUrl = window.URL.createObjectURL(blob)
        a.download = fileName
        a.href = blobUrl
        document.body.appendChild(a)
     
        // 下载文件
        a.click()
     
        // 释放内存
        URL.revokeObjectURL(blobUrl)
        document.body.removeChild(a)
      } else {
        console.log('error', data)
      }
    })
  • 相关阅读:
    JAVA数组复制和扩容
    Nginx-fastdfs安装与配置
    ssh安全免密登录
    修改Linux默认源
    Linux查看IP
    整合ssm框架
    Java-maven-shangcheng-parent-web-配置
    Java-maven-shangcheng-manager-service-配置
    Java-maven-shangcheng-manager-配置
    jquery美化select,自定义下拉框样式
  • 原文地址:https://www.cnblogs.com/coconutGirl/p/12605562.html
Copyright © 2011-2022 走看看