首页 技术 正文
技术 2022年11月19日
0 收藏 948 点赞 4,583 浏览 1888 个字

  文件流转换

一般用于axios设置接收文件流设置时responseType: ‘blob’当接口报错时,前端因已设置responseType: ‘blob’无法再接收json格式数据,会把json格式数据转为blob格式,而到了这里拦截器已无法识别blob进而无法对blob数据进行拦截,这个时候就需要前端将数据blob格式进行转换成正常的json的数据,这会导致前端无法显示报错信息

 /** * 文件流转换 主要代码块,可自定义下载文件名称 * @param {} data */export function download(data, titName) {  var reader = new FileReader()  reader.readAsText(data, ‘utf-8’)  reader.onload = function() {    try {      const newRes = JSON.parse(reader.result) // 获取blob数据转换为json后的数据,即后台返回的原始数据      if (!newRes.success) {        if (newRes.code === ‘407’) {          MessageBox.confirm(newRes.message, i18n.t(‘tips.confirmlogout’), {            confirmButtonText: i18n.t(‘btn.loginagain’),            cancelButtonText: i18n.t(‘btn.cancel’),            type: ‘warning’,            duration: 0,            showClose: true          }).then(() => {            store.dispatch(‘user/resetToken’).then(() => {              location.reload()            })            Promise.reject()          }).catch(err => {            return Promise.reject(err)          })        } else {          Notification.error({            title: ‘Server Error’,            message: newRes.message,            duration: 0,            showClose: true          })        }      }    } catch (err) {      if (!data) {        return      }      const content = data      const blob = new Blob([content], { type: ‘application/vnd.ms-excel’ })      const fileName = titName || ‘EXCEl.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)      }    }  }}

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,028
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,518
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,367
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,146
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859