• 下载功能。针对要加请求头的下载方式


    一般下载,直接调用ifream方式即可。

    但是有些下载方式,需要添加请求头,ifream加不了请求头,因此可以参考以下写法:

    // 文件下载 && 文件导出
    function exportData(obj) {
      let fileType = ''
      if (obj.fileType.indexOf('zip') != -1) {
        fileType = 'application/zip'
      } else if (obj.fileType.indexOf('xlsx') != -1) {
        fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      } else if (obj.fileType.indexOf('xls') != -1) {
        fileType = 'application/vnd.ms-excel'
      } else if (obj.fileType.indexOf('pdf') != -1) {
        fileType = 'application/pdf'
      }
    
      axios({
        url: obj.url,
        method: obj.method,
        data: obj.data || {},
        responseType: 'blob',
        xsrfHeaderName: 'Authorization',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': getToken()
        },
      }).then(response => {
        let blob = new Blob([response.data], {
          type: fileType
        })
        if (obj.fileType === 'pdf') {
          window.open(window.URL.createObjectURL(blob))
          return
        }
        let url = window.URL.createObjectURL(blob)
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        console.log('response',response,url)
        link.setAttribute('download', obj.fileName)
        document.body.appendChild(link)
        link.click()
      }).catch(error => {
        console.log(error)
      })
    }
    

     

    参考demo

    // msSaveBlob_testFile.txt为下载的文件名称

    window.navigator.msSaveBlob,只提供一个保存按钮。(只针对IE)

     window.navigator.msSaveOrOpenBlob,提供保存和打开按钮。(只针对IE)

      

     1 <html>
     2     <script>
     3         function load(){
     4             var blobObject = new Blob(["I scream. You scream. We all scream for ice cream."]);     
     5                         
     6             if(window.navigator.msSaveBlob){
     7                 // IE浏览器
     8                 //window.navigator.msSaveBlob(blobObject, 'msSaveBlob_testFile.txt');        //只提供一个保存按钮    
     9                 window.navigator.msSaveOrOpenBlob(blobObject, 'msSaveBlob_testFile.txt');    //提供保存和打开按钮        
    10                 
    11             } else {
    12                 // 非IE
    13                 const url = window.URL.createObjectURL(blobObject)
    14                 let link = document.createElement('a')
    15                 link.style.display = 'none'
    16                 link.href = url
    17                 link.setAttribute('download', 'msSaveBlob_testFile.txt')
    18                 document.body.appendChild(link)
    19                 link.click()
    20                 window.URL.revokeObjectURL(url)
    21             }                
    22         }    
    23     </script>
    24     <body onload="load()"></body>    
    25 </html>
  • 相关阅读:
    nodejs sequelize 对应数据库操作符的定义
    nodejs利用sequelize-auto 根据数据库的table 生成model
    微信小程序: rpx与px,rem相互转换
    vue 父组件通过props向子组件传递数据/方法的方式
    小程序-wepy学习
    [考试反思]1026csp-s模拟测试88:发展
    [考试反思]1025csp-s模拟测试87:生存
    [考试反思]1024csp-s模拟测试86:消耗
    [考试反思]1024csp-s模拟测试85:以为
    [考试反思]1023csp-s模拟测试84:精妙
  • 原文地址:https://www.cnblogs.com/luoxuemei/p/14303166.html
Copyright © 2020-2023  润新知