开发公司返回流文件前端处理方法(全)

开发公司接口返回二进制前端处理方法

中,开发公司为保证数据安全性,开发公司文件数据通常使用接口开发公司调用方式获取,开发公司后端返回二进制文件流开发公司后前端该如何处理。

流数据转链接
获取到的流文件数据(注意:接口调用时需设置responseType:blob)使用Blob构造函数(将二进制数据存储为一个单一个体的集合)进行转换,它接受两个参数。第一个参数是数组,成员是字符串或二进制对象,表示新生成的Blob实例对象的内容;第二个参数是可选的,是一个配置对象。然后通过URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL.最后返回一个以blob://xxx的浏览器临时路径地址

	//(例)将pdf流文件数据转为临时链接地址	let blob = new Blob([res.data],{type:'application/pdf'}	const url = URL.createObjectURL(blob)
  • 1
  • 2
  • 3

对于不同类型文件转换通过改变type的值实现

文件类型分类

常见文件场景有图片、视频、音频、word、excel、pdf这些类别

文件类型(扩展名)type类型
.jpeg .jpgimage/jpeg
.mp3audio/mpeg
.pdfapplication/pdf
.xlsapplication/vnd.ms-excel
.docapplication/msword
.pdfapplication/pdf
.mpeg .mp4video/mpeg

非流文件处理
正常情况下会返回流文件前端进行转换,在错误情况下返回报错(json)信息时,这时我们不需要下载文件而是给出错误信息.
接口返回的报错信息是json格式,由于请求设置了responseType:‘blob’,所以会转化为Blob类型.
这时需要使用FileReader读取文件,具体逻辑代码如下

//downAllTask为封装的接口方法,params为请求参数downAllTask(params).then((res) => {	//实例读取文件对象    const r = new FileReader();    r.onload = function () {    try {    	// this.result为FileReader获取blob数据,如果返回报错信息,则是正确的json数据,JSON.parse会正常转换    	//如果返回文件流,则JSON.parse时会报错,走catch代码块(进行正常的文件下载)   	        const resData = JSON.parse(this.result);         //resData是后端返回的json数据        if (resData.errorcode===500) {           proxy.$message.warning(resData.msg)           return        }     }catch (error) {         let blob = new Blob([res], { type: "application/zip" });         let url = window.URL.createObjectURL(blob);         const link = document.createElement("a");          link.href = url;         link.download = "下载图片";          link.click();         URL.revokeObjectURL(url);      }    }    r.readAsText(res)}).catch((e)=>{})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发