返回流文件前端处理方法(全)

这篇具有很好参考价值的文章主要介绍了返回流文件前端处理方法(全)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接口返回二进制文件流前端处理方法

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

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

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

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

文件类型分类

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

文件类型(扩展名) type类型
.jpeg .jpg image/jpeg
.mp3 audio/mpeg
.pdf application/pdf
.xls application/vnd.ms-excel
.doc application/msword
.pdf application/pdf
.mpeg .mp4 video/mpeg

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

//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)=>{
})

到了这里,关于返回流文件前端处理方法(全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端返回文件流,前端怎么导出、下载(8种方法可实现)

    在前端导出和下载后端返回的文件流时,可以使用以下几种方法: 使用 window.open() 方法: 在前端使用 window.open() 方法打开一个新的窗口或标签页,并将后端返回的文件流作为URL传递给该方法。浏览器会自动下载该文件。 例如: window.open(\\\'http://example.com/download\\\', \\\'_blank\\\'); 使用

    2024年02月11日
    浏览(55)
  • 前端实现文件下载的方法;以及后端返回 blob 文件流,进行展示。

    前端下载一般分为两种情况,一种是后端直接给一个文件地址,通过浏览器打开就可以下载,另外一种则需要发送请求,后端返回二进制流数据,前端解析流数据,生成URL,实现下载。 通过a标签的download属性来实现文件下载,这种方式是最简单的,也是比较常用的方式,先来

    2024年02月06日
    浏览(52)
  • 后端返回二进制流,前端处理二进制文件流,实现预览图片以及PDF

    1、首先预览PDF需要 后端 将响应头 Content-Type 设置为PDF类型 application/pdf ,不能预览,会直接下载 2、 前端 定义接口:并设置相应类型 responseType 为 blob 请求数据:通过 window.URL.createObjectURL(res) 转成本地预览地址, 在通过 window.open() 方法打开转成本地预览地址即可预览PDF,如下

    2024年02月15日
    浏览(55)
  • 返回流文件前端处理方法(全)

    前后端分离项目中,为保证数据安全性,文件数据通常使用接口调用方式获取,后端返回二进制文件流后前端该如何处理。 流数据转链接 获取到的流文件数据( 注意:接口调用时需设置responseType:blob )使用Blob构造函数(将二进制数据存储为一个单一个体的集合)进行转换,它接受两

    2024年02月09日
    浏览(27)
  • 纯前端 导出Excel文件(包括导出用数组数据模拟文件数据和实际后端返回的文件数据)的 方法

            在纯前端导出文件的一种常见方法是通过生成下载链接来实现,可以使用Blob对象和URL.createObjectURL()方法来实现,因为现在工作中主要运用的前端框架是Angular,这篇文章将以angular为例进行阐述。 一、示例代码 1. 首先,安装FileSaver库(https://github.com/eligrey/FileSaver.j

    2024年04月23日
    浏览(33)
  • 为什么SQL日志文件很大,该如何处理?

    SQL Server 日志文件是记录所有数据库事务和修改的事务日志文件。用 SQL 术语来说,此日志文件记录对数据库执行的所有 INSERT 、 UPDATE 和 DELETE查询操作。 如果数据库联机或恢复时日志已满,SQL Server 通常会发出 9002 错误。在这种情况下,数据库只能读取而不能更新。此篇文章

    2024年02月06日
    浏览(65)
  • 【JavaScript】后端返回的二进制流音频数据或本地音频资源,前端如何播放?

    如果我们要使用本地的音频资源,在 vue3 中那么我们需要对资源的地址做一下处理 后端返回二进制流音频数据,怎么让其可播放 前端播放二进制语音流

    2024年02月03日
    浏览(61)
  • 后端返回parentId,前端处理成children嵌套数据

    rouyi 的 vuetree函数结合elementui  el-table组件使用 把有parentId和id结构的数据处理成children嵌套数据,字段名称不一致,可以设置。 vuetree函数 :  

    2024年02月09日
    浏览(48)
  • 【Vue】后端返回文件流,前端预览文件

      文件预览效果

    2024年01月17日
    浏览(49)
  • 后端一次返回大量数据,前端做分页处理

    问题描述:后端接口返回大量数据,没有做分页处理,不支持传参pageNum,pageSize 本文为转载文章,原文章:后端一次返回大量数据,前端做分页处理 1.template中 分页 对应的模型 2.script中 获取后端数据 改变页数事件 改变条数事件

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包