首页 > 其他分享 >前端二进制流

前端二进制流

时间:2023-10-17 09:44:55浏览次数:433  
标签:const 读取 二进制 前端 name blob Blob

  1. FileReader ---- 读取 file/blob 数据
    FileReader.readAsArrayBuffer() 异步方法, 读取完成 result 属性中保存的将是被读取文件的 ArrayBuffer 数据对象。
    FileReader.readAsDataURL() : 一旦完成,result属性中将包含一个data: URL 格式的 Base64 字符串以表示所读取文件的内容。
    FileReader.readAsText() 一旦完成,result属性中将包含一个字符串以表示所读取的文件内容。
    // 具体用法

// arrayBuffer 转blob
const blob = new Blob([arrayBuffer]);
// blob/file 转arrayBuffer
FileReader.readAsArrayBuffer(blob)
2. fetch 或者ajax 返回值类型 :blob / arraybuffer
在 ajax 中可以配置: responseType = 'blob' / 'arrayBuffer'
在fetch中,直接 fetch(url).then((data)=>data.toBlob()).then(item=>{ 返回的item就为blob数据了 })

几种类型
Blob:new Blob([arrayBuffer]) 、canvas.toBlob、 xhr - responseType='blob' 、 fetch 的 result.toBlob()
arrayBuffer: fileReader.readAsArrayBuffer(blob/file)
objectURL: URL.createObjectURL(blob/fileSourse) / URL.revokeObjectURL DOMString。 可以通过fetch方法重新转回blob。
DataURL:canvas.toDataURL / fileRender.readAsDataURL(blob/file) --- base64地址
imageBitmap: const data = createImageBitmap( blob, image) / 主动调用 data.close() 回收内存
imageData: canvas.getImageData(x,y,width,height); --- canvas.putImageData

几种类型介绍

  1. base64: 是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
  2. blob: Binary Large Object (直译:二进制大对象)在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件
    Blob 与 ArrayBuffer
  • Blob和ArrayBuffer都能存储二进制数据。Blob相对而言储存的二进制数据大(如File文件对象)。
  • ArrayBuffer对象表示原始的二进制数据缓冲区,即在内存中分配指定大小的二进制缓冲区(容器),用于存储各种类型化数组的数据,是最基础的原始数据容器,无法直接读取或写入, 需要通过具体视图来读取或写入,即TypedArray对象或DataView对象对内存大小进行读取或写入;Blob对象表示一个不可变、原始数据的类文件对象。
  • ArrayBuffer 是存在内存中的,可以直接操作。而 Blob 可以位于磁盘、高速缓存内存和其他不可用的位置。

应用一. 下载配置数据 .json 文件 到本地。
function downloadOptions(options, name) {
const objString = JSON.stringify(options, null, 2);
const blob = new Blob([objString], { type: 'application/json' });
const url = URL.createObjectURL(blob);

  console.log(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = name ? (name.endsWith('.json') ? name : name + '.json') : 'option.json';
  const clickEvent = new MouseEvent('click');
  a.dispatchEvent(clickEvent);
}

downloadOptions({name:'zh',password:'XXX'},'用户基本信息')
应用二 分片上传
File 对象是特殊类型的 Blob,可以用在任意的 Blob 类型的上下文中。
针对大文件传输的场景,我们可以使用 slice 方法对大文件进行切割,然后分片进行上传。

应用三 复制图片到粘贴板进行复制粘贴功能

标签:const,读取,二进制,前端,name,blob,Blob
From: https://www.cnblogs.com/honkerzh/p/17768948.html

相关文章

  • 前端调试时不改代码但又想打印变量信息怎么办?
    我们都知道,Chrome的控制台可以在调试的时候打断点。程序运行到这的时候会停止但有时候我们不希望程序断点执行,我们只是想看一些变量的信息。按照以前的方式,我们只能去修改源码增加打印日志的语句,这样既浪费时间,又需要在调试完成后清理掉我们打印的日志代码。其实,Chrome浏览......
  • 记录--Vue中前端导出word文件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助很多时候在工作中会碰到完全由前端导出word文件的需求,因此特地记录一下比较常用的几种方式。一、提供一个word模板该方法提供一个word模板文件,数据通过参数替换的方式传入word文件中,灵活性较差,适用于简单的文件导......
  • 前端打怪之旅=>Es6入门(对象简化写法、函数)
    对象的简化写法ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法这样的书写更加简洁letname='浅辄';letchange=function(){console.log('我可以改变世界');}constschool={......
  • 重新开始学前端,面向社区的快速反馈式学习
    重新开始学前端在设计稿还原、数据结构和算法、构建工具、架构、源码这几个方面要学的是在太多了,做个记录分享一下计划在每个方向个社区进行交流和反馈,我更喜欢和社区交流快速反馈的学习方式每个方向都有一个交流的社区那就好1设计高还原高质量的还原设计稿任何时候都是......
  • 【京东开源项目】微前端框架MicroApp 1.0正式发布
    介绍MicroApp是由京东前端团队推出的一款微前端框架,它从组件化的思维,基于类WebComponent进行微前端的渲染,旨在降低上手难度、提升工作效率。MicroApp无关技术栈,也不和业务绑定,可以用于任何前端框架。源码地址:https://github.com/micro-zoe/micro-app官网地址:https://micro-......
  • 【前端开发】可视化大屏网页适配方案autofit.js
    说明:针对全屏的网页,使用autofit.js可自适应大小屏幕,原理是通过屏幕改变放大/缩小网页,并做了留白区域的兼容处理。 地址:https://github.com/huiJeck/autofit.js#autofitjs......
  • JavaWeb前端
    HTML+CSS+JS+Vue+Element目录HTML+CSS+JS+Vue+Element一、基本概念二、Web服务器三、HTMLCSS3.1官方文档四、JavaScript五、Vue六、Ajax七、前端工程化八、Element一、基本概念静态web:html,css缺点:无法动态更新;无法和数据库交互伪动态:轮播图、点击特效(JavaScript)......
  • 【前端开发】新版Chrome浏览器接口mock调试技巧,超实用
    给大家分享一个 Chrome117 更新中最实用的一个功能:在Network面板中发送mock请求。修改返回响应数据想要修改接口返回的数据,设置成特定的数据,首先打开 网络(Network) 面板,找到你需要Mock的接口,右键然后选择替换内容(Overridecontent): 这时候浏览器会提示:选择要用来......
  • web前端html+css页面内容的六种隐藏方式
    一、使用透明度语法:opacity:0注意:元素消失,但是还会占据空间,只是视觉看不出来<style>.box{width:100px;height:100px;background-color:aquamarine;opacity:0;}</style><divclass="box"></div> 二、使用display语法:display:none注意:元素消失,不会占据空间<style......
  • 总结整合案例前端页面展示+axios异步请求数据
    页面显示: vue+axios+element<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title&g......