vue+axios+blob方式下载文件流

1、vue+axios下载文件流

 let that=this;
       that.$ajax({
            url: '地址',
            method: 'get',
            responseType: "blob",  //必须要填写
            headers:{'Content-Type':'application/x-www-form-urlencoded', 'x-locale':'zh-CN'}    
        }).then(function (res) {
              let blob = new Blob([res.data], {type: "application/vnd.ms-excel"});
              if (window.navigator.msSaveBlob){
                   window.navigator.msSaveBlob(blob);  
             }else { 
                  let objectUrl = window.URL.createObjectURL(blob); 
                       window.location.href = objectUrl;
            }
         }).catch(function (err) {
                console.log(err)
        })

注意:如果在是封装的axios不生效。只能写在axios({})里面。

2、通过form的方式下载文件流。不过不支持headers里面传递用户信息。只能通过下面的方式传递参数数据。

      var url = "",  data={};
           that.downloadFile( {url:url,  data:data}); 
 downloadFile(options){
          var config = $.extend(true, { method: 'get' }, options);
          var $iframe = $('<iframe id="down-file-iframe" />');
          var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
         $form.attr('action', config.url);
        for (var key in config.data) {
                $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
        }
       $iframe.append($form);
      $(document.body).append($iframe);
      $form[0].submit();
      $iframe.remove();
},

3、下载zip文件

that.$ajax({
        	    	url: '',
        	    	method: 'get',
        	    	responseType: "blob", 
        	    	headers:{'Content-Type':'application/x-www-form-urlencoded', 'x-authorization':store.state.userInfo.sessionId || $uitl.getTokenMsg(), 'x-locale':'zh-CN'}
        	    }).then(function (res) {
        	        let blob = new Blob([res.data], {type: "application/zip"});
        	        if (window.navigator.msSaveBlob){
        	    	    window.navigator.msSaveBlob(blob);  
                    }else { 
                	    let objectUrl = window.URL.createObjectURL(blob); 
                                           window.location.href = objectUrl;
                    }
                }).catch(function (err) {
                    console.log(err)
                }) 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值