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)
      }
    })
  • 相关阅读:
    一、异常
    自控力_第三章
    Vocabulary Recitation 2020/05/05
    Vocabulary Recitation 2020/05/04
    Vocabulary Recitaion 2020/05/03
    Vocabulary Recitation 2020/05/01
    最大子序列和
    Vocabulary Recitation 2020/04/29
    自控力_第二章
    Vocabulary Recitation 2020/04/27
  • 原文地址:https://www.cnblogs.com/coconutGirl/p/12605562.html
Copyright © 2011-2022 走看看