【vue项目实践干货】上传文件后,后端返回错误文件的下载

先通过,Fromdata上传文件,当有错误时,后端返回错误文件,当错误文件是正常的,则直接创建A标签,然后主动触发下载,当返回的错误文件不正常时,则返回对于的错误消息,不说了,直接上干货

//上传方法
      uploadFile(){
          let form = new FormData()
          let that =this
          form.append('uploadFile', this.fileList[0]);//有多少条数据appeng的多少次
          this.$axios.post(that.axiosUrl, form, {headers: {'Content-type': 'multipart/form-data'},responseType:'blob'}).then(res => {//值的说的是,响应类型一定要设置,坑了我许久
            
                 let reader = new FileReader()
            reader.readAsText(new Blob([res]), 'utf-8')
            reader.onload = () => {
              var obj = reader.result
              if(obj.indexOf('result')>-1){
                let ret = JSON.parse(obj)
                if(ret.result == 200){
                  this.$emit("query");
                  // this.$refs.ListTable.loadData();
                  return this.$message.success('导入成功!')
                }else if(ret.result != 200){
                  return this.$message.error('导入失败!')
                }
              }
              // this.$message.error('导入失败');
              const blob = new Blob([res], {type: 'application/vnd.ms-excel'})
              const fileName = '有问题数据表.xls'
              if ('download' in document.createElement('a')) { // 非IE下载
                const elink = document.createElement('a')
                 elink.download = fileName
                elink.style.display = 'none'
                elink.href = URL.createObjectURL(blob)
                document.body.appendChild(elink)
                elink.click()
                URL.revokeObjectURL(elink.href) // 释放URL 对象
                document.body.removeChild(elink)
              } else { // IE10+下载
                navigator.msSaveBlob(blob,fileName)
              }
              this.$message({
                type: "error",
                message: "导入失败,请查看表格"
              });
              // console.log(res)
             }
          }).catch(err => {
            console.log(err)
          })
      },

注意,这里面有很多细节,需要大家去注意,好记性不如烂笔头,

 

 

对大家有帮助的话,麻烦点赞收藏转发

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

new 前端

请博主喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值