问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【前端知乎系列】ArrayBuffer 和 Blob 对象

发布网友 发布时间:2024-09-30 04:26

我来回答

1个回答

热心网友 时间:2天前

ArrayBuffer 和 Blob 对象在前端开发中广泛用于处理二进制数据,尤其是在文件上传操作中,如图片上传预览等问题。下面将深入介绍这两个对象的定义、使用方法、实例属性和方法,以及它们在实际应用中的案例。



ArrayBuffer 对象

ArrayBuffer 是 ES6 正式纳入 ECMAScript 规范的接口,用于处理二进制数据。它通过数组语法来管理二进制数据,被称为二进制数组。ArrayBuffer 本身不能直接读写,但可以通过 TypedArray 视图和 DataView 视图来操作数据。关于这些视图的具体使用和原理,可以参考阮一峰老师的《ECMAScript 6 入门 ArrayBuffer》章节。



概念介绍

ArrayBuffer 对象表示一个二进制数据的内存空间,内部存储的二进制数据不能直接被访问,只能通过创建视图来读取或修改数据。视图为 ArrayBuffer 提供了以特定格式解读二进制数据的能力。



实例使用

ArrayBuffer 提供了构造函数 ArrayBuffer() 来创建实例。创建一个实例对象 buffer,占用 32 个字节内存。



实例属性和方法

ArrayBuffer 实例具有 byteLength 属性,表示当前实例占用的内存字节长度。该属性只读,一旦创建不可变。此外,ArrayBuffer 提供了 slice() 方法用于复制内存的一部分。



兼容性

ArrayBuffer 的兼容性良好,主要现代浏览器如 Chrome、Firefox、Safari、Edge 等都支持。



Blob 对象

Blob 全称为 Binary Large Object,表示二进制大型对象,用于表示文件内容,如图片文件。Blob 对象的内容由构造函数参数数组中给出的值的串联组成。



概念介绍

Blob 对象与 ArrayBuffer 的主要区别在于,Blob 更关注文件内容的读写,而 ArrayBuffer 更侧重于二进制数据的处理。Blob 对象能够表示文件的数据内容,适合处理和传递文件。



实例使用

使用 Blob() 构造函数创建 Blob 实例。参数可以是一个由 ArrayBuffer、ArrayBufferView、Blob 或 DOMString 等对象构成的数组,用于指定 Blob 的内容。此外,Blob 对象可以包含 type 和 endings 属性,用于指定文件类型和行结束符。



实例属性和方法

Blob 实例有两个属性:size 表示文件大小;type 表示文件类型。Blob 实例提供了方法,用于创建 Blob 的子集,指定起始和结束位置以及新的数据类型。



兼容性

Blob 的兼容性同样良好,现代浏览器均支持。



实际案例

获取文件信息

通过文件选择器允许用户选择文件,脚本无法直接设置其值,只能在用户选择文件后读取。文件选择器返回的 FileList 对象包含了 File 实例,每个实例对象都有 name 和 lastModifiedDate 属性,表示文件名和最后修改日期。



下载文件

在 AJAX 请求中,通过设置 responseType 属性为 'blob',可以下载一个 Blob 对象。获得的 xhr.response 即为 Blob 对象。



生成 URL

使用 URL.createObjectURL() 方法可以针对 Blob 对象生成临时 URL,便于某些 API 使用,如图片预览。生成的 URL 以 'blob://' 开头,用于唯一标识内存中的 Blob 对象。



读取文件

通过 FileReader 对象读取 Blob 对象的内容,可以使用 FileReader.readAsText() 读取文本文件,FileReader.readAsArrayBuffer() 读取二进制文件。



总之,ArrayBuffer 和 Blob 对象在前端开发中扮演着重要角色,用于高效处理和操作二进制数据和文件内容。通过正确使用这些对象,可以解决文件上传、预览、下载和读取等常见问题。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 Blob-对象介绍 Blob、File、ArrayBuffer、TypedArray、DataView究竟应该如何应用_百度... ...中关于File、Blob、FileReader、ArrayBuffer的概念及使用_百度知 ... 柏油和石油注册商标属于哪一类? 求助一下现在重庆地铁和轻轨在运行的线路有哪些,具体经过哪些站点~~谢谢... 重庆环线快车怎么坐,重庆环线旅游路线 副卡的钱怎么转到主卡上 2017昆山家庭装修价格表求一份? 2017实木地板价格表 伊索寓言十则 唾液臭口水弄皮肤上会有臭味是什么病引起的啊还有口臭 我的唾液涂在皮肤就会有异味,怎么治啊?? 杨明光作品每平尺多少钱? 驾考科目一吐血大总结,这些易混淆点一个都不能错! 为什么建设银行打不开 女生适合报三支一扶扶贫吗 本科生建议考三支一扶吗 什么打不开建设银行 科目一科目四易混淆的标线题,考前必须看! 科目一典型易错题汇总 考试满分秘籍 科目一记住这些小秘籍,满分通过再也不是梦 关于blob 农村集体土地征收遇到“未批先占”,农民应该怎么办 “未批先占”就已动手拆除房屋?在明律师对违法征收行为说不!_百度... 先签字真的好吗?辽宁100多户村民告诉你:少领400多万补偿款 雷克萨斯RX各排量区别?和途观比哪个好? 消防产品那些需要提供供货证明 阿丽亚娜-5运载火箭火箭信息 我是在一个普通二本大学读工商管理专业的大一学生,在出国和考研上怎么选... 美的中央空调性能如何? 我是普通二本学校的工商管理的学生,现在大二,准备考研。但很多人说... 二本大学英语专业 毕业后准备出国读研 大二面临修管理类双学位_百度... 您好!我的儿子今年上大二,二本,工商管理。计划考研或考公务员。昨天他告... 我想学工商管理专业,但是这个专业必须是硕士,海归等等一流大学毕业如... 个人域名、DDNS、公网IP、DSM映射:威联通TS-453Dmini外网访问 ...开机后不出现OEM logo,但能正常进入系统,可以听到开 准备组建NAS,如何连线搭接和设置? 为什么ca字显示不出来求解啊 急 CAD一按打印就死机,连打印的框都没跳出来,我用的是CAD2008 求解啊 我... iphone导入的铃声音质太差怎么办苹果铃声导入音质变了 ...iTunes传到手机上后自己制作苹果铃声音质怎么差