ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文件流转换(一般用于axios设置接收文件流设置时responseType: 'blob')

2021-07-10 15:37:37  阅读:205  来源: 互联网

标签:文件 axios elink newRes blob 设置 const document data


  文件流转换

一般用于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)       }     }   } }

标签:文件,axios,elink,newRes,blob,设置,const,document,data
来源: https://www.cnblogs.com/sws-kevin/p/14993873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有