前端通过Blob或File文件获取二进制数据

简介: 前端通过Blob或File文件获取二进制数据

前言:


按理说,咱前端使用二进制的场景主要是文件以二进制格式的数据上传到后端,或者将后端返回的二进制数据文件下载并解析成文件,关于以上两种场景,可以看我之前的文章。

前端上传文件保存到变量中_接着奏乐接着舞。的博客-CSDN博客

一般情况下,都是给后端一个File文件就完事了,但是有时候后端就非要二进制数据流。

这篇文章主要是写如何将Blob文件或者File文件转成二进制数据,并且将数据转换成后端需要的,最后加密发给后端。

使用场景:


前端使用recorder.js以及websoket,实现前端录音,将音频文件以二进制数据流的形式,加密后发送给后端。

ps1:前端录音和websoket的功能我有写博客。

vue基于websocket实现智能聊天及吸附动画效果_接着奏乐接着舞。的博客-CSDN博客_vuewebsocket聊天

vue悬浮框自由移动+录音功能_接着奏乐接着舞。的博客-CSDN博客_vue浮动框

ps2:后端需要的二进制数据格式是unit8,这个应该是因人而异的,不过不管用啥,其实很简单就把我的例子unit8那里改成你们约定的格式。

image.png

image.png

由上图可知,其实Blob或者File文件只是一个类似仓库的东西,我们无法通过它取出来原始的二进制数据,而完成这些操作的是readAsArrayBuffer()方法,它是 FileReader对象的实例方法,作用就是将其中的二进制数据取出来。取出来之后呢,二进制的数据类型还是很多的,有float32,int8,unit8之类的格式,我们可以onload()回调函数中 使用new Uint8Array()   生成Unit8类型的二进制,同理,要int8的数据类型就用  new Int8Array() 方法。

具体请参考以下代码:            

封装的函数


   // 录音组件录制的用户声音二进制文件
    getBlob (data) {
      var reader = new FileReader() //生成FileReader实例
      reader.readAsArrayBuffer(data) //取出blob或者File文件的二进制原始数据
      reader.onload = function (da) { //有一个异步回调
        let yy = new Uint8Array(da.target.result) //后端需要的二进制格式
        let endd = [...yy] //后端需要的格式,我们改造成数组
        this.houDuanData = endd //保存到变量中,保存的就是我们需要的二进制数据
      }
    },
相关文章
|
16天前
|
JSON 前端开发 JavaScript
前端上传文件前校验文件数据
该文介绍了如何在Vue项目中实现批量导入Excel数据的校验。使用Element UI的`el-upload`组件上传文件,通过FileReader读取内容,结合XLSX库解析Excel为JSON。解析过程包括将二进制数据转换为workbook对象,提取worksheet并转化为JSON。之后,遍历JSON数据进行字段校验,若发现空值则记录错误。提供的Demo展示了选择Excel文件后控制台显示校验结果。技术栈包括vue 2.6.14、element ui 2.15.14和xlsx 0.17.0。建议将此类功能封装为通用组件以复用。
23 2
前端上传文件前校验文件数据
|
13天前
|
前端开发 JavaScript 数据处理
前端新手指南:如何解决JavaScript导出CSV文件不完整的问题
【6月更文挑战第4天】在JavaScript中处理CSV文件时,需要特别注意一些特殊字符,例如逗号、双引号、换行符等。这些字符可能会影响CSV文件的解析,导致数据错乱。
47 0
|
4天前
|
前端开发 JavaScript API
探索现代Web开发中的动态数据交互——前端与后端整合实战
本文探讨了现代Web开发中前端与后端整合的关键技术点,通过实际案例演示了如何利用JavaScript和Node.js实现动态数据交互,全面解析从数据请求到响应的全过程。
|
3天前
|
前端开发 API Python
如何在Python中接收前端POST上传的文件
如何在Python中接收前端POST上传的文件
9 2
|
3天前
|
JSON 前端开发 JavaScript
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
8 2
|
20天前
|
监控 前端开发 JavaScript
|
24天前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
29 2
|
1月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
51 1
|
1月前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
|
1月前
|
前端开发 容器
CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)
CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)
40 2