前端向Java后端请求blob、arraybuffer类型的数据流

这篇具有很好参考价值的文章主要介绍了前端向Java后端请求blob、arraybuffer类型的数据流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目需求描述:

前端需要获取后端音频文件,但遇到跨域问题,不能直接使用url获取,需求必须使用流将文件传到前端。因此,考虑Java后端读取音频文件,然后向前端发送数据流,前端按后端发送类型将数据接收,并合成其格式文件。

后端代码举例

 @ResponseBody
 @PostMapping("/getWavFile")
 public ResponseEntity<byte[]> getUserVoiceprint(String fileName){
	 if(fileName == null || fileName == ""){
	     return null;
	 }
	 try{
	     String vpPath = "E:/files/wav/" + fileName + ".wav";
	     File f = new File(vpPath);
	     if(f.exists()){
	         byte[] file = Files.readAllBytes(f.toPath());
	         HttpHeaders headers = new HttpHeaders();
	         headers.set("Content-Disposition", "attachment; filename=\"" + f.getName() +".wav\"");
	         ResponseEntity<byte[]> response = new ResponseEntity(file, headers, HttpStatus.OK);
	         return response;
	     }else{
	         return null;
	     }
	 } catch (IOException e) {
	     e.printStackTrace();
	 }
	 return null;
 }

前端代码举例

引入axios.min.js文件

<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
 axios({
     method:"post",
     url: "/getWavFile",
     params: {fileName: wavName},
     responseType:'arraybuffer',
     headers: { 'Accept': '*/*', 'Content-Type': 'audio/wav' }
 }).then(data => {
     if(data.data.byteLength > 0){
         blob = new Blob([data.data], {type: 'audio/wav'});
         let audio = document.createElement('audio');
         audio.src = URL.createObjectURL(blob);
         audio.play();
     }else{
         alert("未查询到记录");
     }
 }).catch(function() {
     alert("未查询到记录");
 });

其中,responseType:‘arraybuffer’,写成responseType:'blob’也可以;method也可以使用get,但此时不能使用params传参。文章来源地址https://www.toymoban.com/news/detail-540280.html

到了这里,关于前端向Java后端请求blob、arraybuffer类型的数据流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java后端和前端传递的请求参数的三种类型

    在 HTTP 请求中,常见的请求参数类型有三种:`application/x-www-form-urlencoded`、`multipart/form-data` 和 `application/json`(通常用于 `raw` 类型)。这三种类型主要指的是请求体中的数据格式,其中包括参数的传递方式和编码。 1. **`application/x-www-form-urlencoded`:**    - 这是默认的编码类型

    2024年02月02日
    浏览(32)
  • axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值

    问题:调用后台图片接口,后台返回二进制流图片数据格式。前端接收到流后处理数据显示在img标签。 解决: 1、设置axios接收参数格式为\\\"arraybuffer\\\": 2、转换为base64格式图片数据在img标签显示: 返回的string直接放在img标签src可直接显示 二、设置axios接收参数格式为\\\"blob\\\":

    2023年04月09日
    浏览(27)
  • 后端接口返回图片(数据流)前端怎么处理(ArrayBuffer转base64)【包含PC以及小程序】

    MDN-前端必看网站 #最后如果axios的封装时有封装响应拦截器,如下: 要给这个if判断的条件做补充 这里放axios官网的请求配置中 responseType 可选值参考(封装axios必须了解) axios官网地址

    2024年02月14日
    浏览(34)
  • 前端将后端数据流转为图片(微信小程序)

    获取后端流的请求responseType必须使用arraybuffer 将后端数据刘转换为base64再转换为本地图片 html与data

    2024年02月15日
    浏览(28)
  • 谈谈:File、Blob、FileReader、ArrayBuffer、base64

    JavaScript 提供了一些 API 来处理文件或原始文件数据,例如:File、Blob、FileReader、ArrayBuffer、base64 等。下面就来看看它们都是如何使用的,它们之间又有何区别和联系。 1. Blob Blob全称为binary large Object 即二进制大对象,他是js中的一个对象,表示原始类似文件的数据。MDN中的解

    2024年02月09日
    浏览(38)
  • 前端下载 Blob 类型整理

    文件流下载转Blob时类型匹配,例如: Blob配置类型如下表所示,详细介绍 后缀名 文件类型 类型(type) .xls Microsoft Excel application/vnd.ms-excel .xlsx Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .csv CSV text/csv .doc Microsoft Word application/msword .docx Microsoft Word (

    2024年02月17日
    浏览(28)
  • Java中GET请求与POST请求,前端传参与后端接收实例

    此示例以代码方式展现,可直接结合controller层每个接口上方注释与其接口传递参数方式理解! 前端传参直接就以apiPost工具来代替 apiPost调用后端接口几种方式   代码:  controller层: service层: mapper层: xml:

    2024年02月07日
    浏览(38)
  • 【SpingBoot】详细介绍SpringBoot项目中前端请求到数据库再返回前端的完整数据流转,并用代码实现

    在SpringBoot项目中,前端请求到最终返回的完整数据流转一般包括以下几个步骤: 前端发送HTTP请求到后端Controller。 Controller接收到请求后,调用相关Service处理业务逻辑。 Service调用DAO层获取数据。 DAO层访问数据库获取数据。 数据库返回数据给DAO层。 DAO层将数据返回给Servic

    2024年02月10日
    浏览(27)
  • vue 后端返回二进制流-前端通过blob对象下载文件-图片

    前言 在实际开发中我们经常会遇见下载文件的场景,比如下载合同,下载文件 下载文件有2种方式,一种是后端返回二进制流,前端通过blob对象接受根据不同类型下载 还有一种把地址直接在浏览器新窗口打开浏览器打开pdf可以预览和下载,其他文件直接下载 但不管是那种方

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

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

    2024年02月06日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包