首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer

简单的说:在JS中,有两个构造函数 File 和 Blob, 而File继承了所有Blob的属性。 所以在我们看来,File对象可以看作一种特殊的Blob对象。...Blob实战 通过window.URL.createObjectURL方法可以把一个blob转化为一个Blob URL,并且用做文件下载或者图片显示的链接。...从这个角度看,Blob URL是一个浏览器自行制定的一个伪协议 Blob下载文件 我们可以通过window.URL.createObjectURL,接收一个Blob(File)对象,将其转化为Blob...本地读取文件内容 如果想要读取Blob或者文件对象并转化为其他格式的数据,可以借助FileReader对象的API进行操作 FileReader.readAsText(Blob):将Blob转化为文本字符串...Base64格式的Data URL 下面我们尝试把一个文件的内容通过字符串的方式读取出来 document.getElementById

7.1K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    利用WebRTC录制采样的音视频

    WebRTC录制音视频流之后,最终是通过Blob对象将数据保存成多媒体文件的,而Blob与ArrayBuffer和ArrayBufferView有着密切的关系。 1....ArrayBuffer ArrayBuffer对象表示通用的、固定长度的二进制数据缓冲区,可以直接使用ArrayBuffer存储图片和音视频文件。...ArrayBufferView ArrayBufferView并不是一个具体的数据类型,而是不同类型Array的总称,这些类型包括:Int8Array、Uint8Array、DataView等等。...以Int8Array为例,当对数据进行实例化之后,计算机会在内存中为其分配一块内存空间,在该空间中的每一个元素是8位整数。...Blob Blob是Javascript的大型二进制对象类型,WebRTC最终是使用Blob将录制好的的音视频流保存成多媒体文件的,而Blob的底层是由ArrayBuffer对象的封装类实现的,即Int8Array

    1.5K20

    看看Angular有啥新玩法!手把手教你在Angular15中集成Excel报表插件

    下面将介绍如何在Angular15中集成Excel报表插件并实现简单的文件上传和下载。 在本教程中,我们将使用node.js,请确保已安装最新版本。...(初始化一个Angular工程) 将下面的表格资源粘贴到package.json文件中的dependencies标签,并使用npm install指令下载和ng serve指令运行。...\ \ \ (初始化上传、下载按钮) 在src/app/app.component.ts中添加上传、下载按钮的方法: //上传文件代码 onFileChange...: any) { saveAs(blob, filename); }, function (error: any) { console.log(error); }); } (添加上传、下载按钮的方法...) 现在可以使用ng serve指令启动项目并在浏览器中测试上传文件、修改文件内容和下载文件的操作了。

    39420

    反思录:Angular实现svg和png图片下载

    适用范围 svg被主流浏览器和svg阅读器支持,canvas只有主流浏览器支持; svg适用于大面积渲染区域的程序和静态文档,如google地图。canvas适合小范围图像密集型场景,如游戏。...>是一个自定义的component,它代表了一个svg文件,svg的内容存放在template.component.thml中,而template.component.ts...接下来要解决的就是如何在component中引用页面上的svg元素并将它转化成png格式的图片。 svg和png图片转换和下载 1....获取元素 Angular中提供一种叫做ViewChild的注解,可以帮助我们引用到页面中的svg元素,此处就是#template....永远从问题最近的地方开始分析 不要用战术上的勤奋掩饰战略上的懒惰 我个人对Angular并不十分熟悉,在实现svg和png图片下载功能的过程中遇到一些坑,这些坑有深有浅,深的直接面向stackoverflow

    2.7K40

    从图片裁剪来聊聊前端二进制

    写在最前面(不看也不会少一个亿) 最开始的一个小需求 前两天项目中有个小需求:前端下载后台小哥返回的二进制流文件。 起初接到这个需求时,我感觉这很简单啊(虽然我不会,但可以百度啊,,,,) ?...没关系,我下面会具体装逼讲解的)构建为一个object URL对象、指定文件名&文件类型、创建a链接模拟点击实现下载,最后通过URL.revokeObjectURL释放创建的对象。...对象,来看下定义: ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区.ArrayBuffer 不能直接操作,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式...,并通过这些格式来读写缓冲区的内容....简单的说:在JS中,有两个构造函数 File 和 Blob, 而File继承了所有Blob的属性。 所以在我们看来,File对象可以看作一种特殊的Blob对象。

    1.6K20

    Web前端WebRTC攻略(二) 音视频设备及数据采集

    “轨”在多媒体中表达的就是每条轨数据都是独立的,不会与其他轨相交,如 MP4 中的音频轨、视频轨,它们在 MP4 文件中是被分别存储的。 流(Stream) 可以理解为容器。...这些类型包括:Int8Array、Uint8Array、DataView 等。也就是说 Int8Array、Uint8Array 等才是 JavaScript 在内存中真正可以分配的对象。...Blob Blob(Binary Large Object)是 JavaScript 的大型二进制对象类型,WebRTC 最终就是使用它将录制好的音视频流保存成多媒体文件的。...options:可选项,指定视频格式、编解码器、码率等相关信息,如 mimeType: ‘video/webm;codecs=vp8’。...播放录制文件 首先根据 buffer 生成 Blob 对象;然后,根据 Blob 对象生成 URL,并通过 video标签进行播放。

    3.6K10

    Blob、File、ArrayBuffer、TypedArray、DataView究竟应该如何应用

    你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。...相信大家在日常工作中或多多少都遇到过 blob 相关的应用,比如 blob 格式的 Url 以及对于文件上传中切片等等应用场景。接下来,我们一起来看看所谓 blob 对象。...基础概念 Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。...(blob); const aLink = document.createElement('a'); // href属性 aLink.href = url; // 定义下载的文件名 aLink.download...URL.revokeObjectURL(url); 复制代码 这段 JS 代码会在我们打开 html 页面后自动下载一个 name.json 的文件,而下载的 name.json 的 URL 来源正是我们通过

    1.9K50

    JS中的二进制数据处理

    下面介绍一下业务场景中比较常见到的一种二进制表示类型——Blob。 三、Blob 3.1 基本介绍   Blob 对象比较常用于文件上传、文件读写操作等。...……*/); 3.2 运用场景 通过window.URL.createObjectURL方法可以把一个blob转化为一个Blob URL,并且用做文件下载或者图片显示的链接。...Blob URL所实现的下载或者显示等功能,仅仅可以在单个浏览器内部进行。而不能在服务器上进行存储,亦或者说它没有在服务器端存储的意义。...下面是一个Blob的例子,可以看到它很短 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf 和冗长的Base64格式的Data URL相比,Blob URL的长度显然不能够存储足够的信息...「文件下载」 「图片显示」 「切片上传」 「本地文件读取」 四、参考资料 《了解 ES6 TypedArray 和 DataView》 《聊聊JS的二进制家族:Blob、ArrayBuffer

    3.7K20

    如何在 Windows 上安装 Angular:Angular CLI、Node.js 和构建工具指南

    Angular CLI, Node.js, and Build Tools,作者为Ahmed Bouchefra 在本教程中,我们将学习如何在 Windows 中安装 Angular CLI 并使用它来创建...注意:您可以免费下载我们的《Angular 8 书:使用 Angular 8 构建您的第一个 Web 应用程序》。...只需访问下载页面并获取 Windows 的二进制文件,然后按照安装向导操作即可。...它还会询问您要使用的样式表格式(例如 CSS)。选择您的选项并按 Enter 键继续。 之后,您将使用目录结构和一堆配置和代码文件创建项目。它将主要采用 TypeScript 和 JSON 格式。...结论 在本教程中,我们了解了如何在 Windows 计算机上安装 Angular CLI,并使用它从头开始初始化一个新的 Angular 项目。

    61500

    万字长文带你学习【前端开发中的二进制数据】| 技术创作特训营第五期

    这个分享将带你深入探索 ArrayBuffer、Blob、File 以及流(Stream)等概念,探讨它们如何在前端开发中发挥作用,解锁了解和利用二进制数据的强大能力。为什么二进制数据重要?...File 是 Blob 的拓展:File 是 Blob 的拓展,它包含了一些额外的元数据,如文件名、最后修改时间、文件大小等。这使得 File 更适合用于表示用户通过文件输入字段选择的文件。3....但需要注意,File 构造函数除了接受数据和文件名外,还可以接受一些可选的参数,如最后修改时间等。.../octet-stream' });这些方法可以帮助你从 Blob、File 和 ArrayBuffer 中读取和写入数据,以及在不同格式间进行转换。...以下代码示例展示了如何下载 Streams 规范,直接在浏览器中对其进行压缩 (gzip),以及将压缩后的文件直接写入磁盘。

    63131

    前端文件下载汇总「案例讲解」

    本文汇总之前讲解的前端文件下载的知识点,包括下面的内容 通过超链接下载文件 通过 Blob 下载文件 获取文件下载进度 本文会通过案例进行讲解,分篇讲解请导航到文末参考。...页面上监听不到下载的进度。 通过 Blob 下载 上面我们讲解完了通过超链接下载文件,本小节我们讲讲如何将文件内容转成 Blob 文件。 Blod 对象表示一个不可变、原始数据的类文件对象。...它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 用来操作数据。 因为已经将文件转为 Blob 了,不受同源策略的限制,这里可以忽略跨域请求。...触发下载按钮 Download File。我们将看到自动调起浏览器下载,文件被下载下来。 小结 本小节中,我们使用 Blob 和 createObjectURL,并整合了 fetch 进行文件的下载。...那么,它又是如何像 axios 调用文件下载的呢? 本案例,假设我们已经编写好了前端分离的接口文件(接口跨域请求),案例服务端结构如原生的 XMLHttpRequest。

    28210

    前端文件下载(四)

    截止目前,我们已经分了三个篇幅讲解了前端文件的下载。...前端文件下载(一) - 下载超链接文件 前端文件下载(二) - 通过 Blob 对象下载流文件 前端文件下载(三) - 通过原生 XMLHttpRequest 下载大文件,展示数据拉取进度 本文,我们以文章...笔者使用的 angular 框架来开发,其中集成了 @angular/common/http。那么,它又是如何像 axios 调用文件下载的呢? 我们简单写了个 demo,如下: <!...总结 使用原生 XMLHttpRequest 处理请求,让我们知道文件下载的前后发生了什么;使用 axios 和 @angular/common/http 能让我们更好管理和快速开发 axios 也好,...@angular/common/http 也罢,大同小异,看团队来使用 关于前端文件下载,我们就讲到这里。

    30330

    前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

    在之前的文章中,我们为大家分别详细介绍了在JavaScript、React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的“三部曲”,本文我们将为大家介绍该问题在Angular...中的实现。...许多企业在其业务的各个环节中使用了 Excel 电子表格进行预算和规划。 通常情况下,刚开始时我们的业务流程中的数据简单,也不涉及复杂的格式和数据关系。...在你的应用程序中安装 SpreadJS 组件 完整的Demo请点击此处下载: https://gcdn.grapecity.com.cn/forum.php?...稍后,需要将此 blob 数据传递给文件保护程序组件的 saveAs() 函数: onClickMe(args: any) { const self = this; const filename

    1.8K20

    在前端轻量化的导出表格数据

    序言 ---- 对于后台管理系统而言(这里指前端部分),可视化的表格展现数据是必不可少的部分,而将这些表格数据导出为 Excel 或 Number 等软件可打开的文件的这种需求也很常见,一般这个功能都是在服务器端如...为了在前端实现对文件的操作,我们需要用到 Web API 中的 Blob 对象, 一个 Blob 对象表示一个不可变的、原始数据的类似文件对象,利用此 Blob 对象即可将 CSV 原始数据封装。...另外为了在前端触发文件的下载,还需要用到 a 标签的 download 属性,当然还有 href 属性对文件对象的引用。...如上图所示,我准备了一个 json 格式的数组作为原始数据,首先我们定义每一列的表头,然后根据表头的顺序遍历 json 数组以逗号分隔依次拼接每一列的内容,每一个 json 对象构成了表格中的一行,因此遍历完随即加上...将文件下载的操作进行封装,设置 download 标识,依次判断是否触发了下载的操作,上图中我都进行了注释。

    1.1K20

    JS中Buffer数据详解

    Array不一样),ArrayBuffer是连续内存,因此对于高密度的访问(如音频数据)操作而言它比JS中的Array速度会快很多 ArrayBuffer是不能直接被访问的,因此需要借助Typed Array...创建读取文件的对象 var reader = new FileReader() readAsDataURL(Blob|File) 读取文件并将文件以数据URI的形式保存在result属性中,...默认情况下,文本编码格式是 UTF-8,可以通过可选的格式参数,指定其他编码格式的文本 以纯文本形式读取文件,将读取到的文本保存在result属性中,第二个参数用于指定编码类型,可选的 reader.readAsText...} }else{ alert('no data') } ​ 只读取文件的一部分可以节省时间,非常适合只关注数据中某个特定部分(如文件文件)的情况 ​ 对象URL ​ 对象URL也被称为...blob URL,指的是引用保存在File或Blob中数据的URL,使用对象URL的好处是没必要把内容读取到js中,而直接使用文件内容,能生成一个链接,例如 Img的src = URL ​ 创建对象URL

    6.7K30
    领券