3分钟入门:Blob 对象的了解与创建

2023-11-06

Blob 对象

Blob,英文全称 binary large object,是指二进制类型大对象。

Blob 对象表示不可变的、类似文件对象的原始数据。即它是类似文件对象的二进制数据,可以像操作 File 对象一样操作 Blob 对象。但话又说回来,File 其实是继承自 Blob。

创建 Blob 对象

Blob 构造函数

new Blob(blobData[, options])

  • blobData 参数:必须是一个数组,数组每个元素连接起来构成 Blob 对象的数据。

  • 可选参数 options:一个对象,为 Blob 对象配置属性。常用的是 type 属性,指明多媒体 MIME 类型,默认值为 “”。

const blob = new Blob(['hello'], { type: 'text/html'})
const blob2 = new Blob(['hello'], { type: 'application/pdf'})

// 栗子:
var data1 = "a";
var data2 = "b";
var data3 = "<div style='color:red;'>This is a blob</div>";
var data4 = { "name": "abc" };

var blob1 = new Blob([data1]);
var blob2 = new Blob([data1, data2]);
var blob3 = new Blob([data3]);
var blob4 = new Blob([JSON.stringify(data4)]);
var blob5 = new Blob([data4]);
var blob6 = new Blob([data3, data4]);

console.log(blob1);  // Blob {size: 1, type: ""}
console.log(blob2);  // Blob {size: 2, type: ""}
console.log(blob3);  // Blob {size: 44, type: ""}
console.log(blob4);  // Blob {size: 14, type: ""}
console.log(blob5);  // Blob {size: 15, type: ""}
console.log(blob6);  // Blob {size: 59, type: ""}

Blob 对象的 size 属性代表大小,单位是字节。

和 localStorage、sessionStorage 一样,创建 Blob 对象时会先把数据转换成字符串。

JSON.stringify(data4) 的结果是 "{"name": "abc"}",正好14 个字节(不包括最外面的引号)。而创建 blob5 的时候,先调用 data4 的 toString() 方法,将对象转换为字符串 "[Object Object]",正好 15 个字节,blob5 保存的数据实际上是 "[Object Object]"

因此,无法将 Symbol 构建为 Blob 对象,因为 Symbol 类型的值无法转换成字符串。

var s = Symbol();
var symbolBlob = new Blob([s]);

slice() 方法

Blob 对象的 slice 方法返回一个新的 Blob 对象,包含源 Blob 对象指定范围的数据。
该方法与数组的 slice 方法用法类似。contentType 指明这个新的 Blob 对象的 MIME 类型。

Blob.slice([start[, end[, contentType]]])
var data = "abcdef";
var blob1 = new Blob([data]);
var blob2 = blob1.slice(0,3);

console.log(blob1);  //输出:Blob {size: 6, type: ""}
console.log(blob2);  //输出:Blob {size: 3, type: ""}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3分钟入门:Blob 对象的了解与创建 的相关文章

  • 在 Android 中使用 lambdaj

    有人尝试过在android开发中使用lambdaj库吗 当我创建一个简单的小型java应用程序时 它对我来说工作得很好 但我无法在android应用程序中使用它 UPDATE 我正在添加 lambdaj lambdaj 2 3 2 with
  • JavaScript 将 NULL 转换为 0

    我正在使用 jQuery 来获取元素的高度 但如果该元素不存在 以下代码将返回 NULL height menu li active ul height returns integer or null 这是一种跨浏览器安全的方法 可以使用以
  • JavaScript 中的自定义“确认”对话框?

    我一直在开发一个使用自定义 模式对话框 的 ASP net 项目 我在这里使用吓人引号 因为我知道 模式对话框 只是我的 html 文档中的一个 div 它被设置为出现在文档其余部分的 顶部 而不是真正意义上的模式对话框 在网站的许多部分
  • 如何提高 Guice 启动时的性能

    好吧 我知道我的计算不客观等等 但无论如何 我讨厌在执行单元测试时等待这么多时间 我的 guice swing 应用程序需要大约 7 秒来初始化 这是一个简单的 IRC 客户端 在那一刻 没有打开连接 我什至还没有调用任何 java io
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 需要了解Javascript函数提升示例

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 在没有全局变量的情况下对多个事件使用 Promise 回调

    我有一个包含在函数中的承诺 我将使用不同的输入参数多次调用该函数 每次承诺解决时 我都会将解决的值推送到存储数组中 当我所有的调用承诺都得到解决后 我将在其他函数中使用这个存储数组 是否有任何干净的方法可以在不使用 全局 变量的情况下进行设
  • 使用 javax.mail 和 CentOS 的邮件服务器

    我有一个 Java 程序 安装在一台旧的 Ubuntu 机器上 并使用 javax mail 发送邮件 然而 那台机器宕机了 我现在在新的 CentOS 机器上运行相同的 Java 应用程序 但是 当我尝试使用 mail smtp host
  • 如何对JConsole的密码文件的密码进行加密

    我正在使用 JConsole 访问我的应用程序 MBean 并使用 password properties 文件 但根据 Sun 的规范 该文件仅包含明文格式的密码 com sun management jmxremote password
  • 如何在 ES6 类中使用静态变量?

    我正在尝试在 es6 中使用静态变量 我想声明一个静态变量count in Animal类并增加它 但是 我无法通过声明静态变量static count 0 所以我尝试了另一种方法 class Animal constructor this
  • 已安装 cypress npm 软件包,但缺少 Cypress 二进制文件

    大家好 我是 azure devops CI 的新手 我正在尝试通过在作业之间缓存 node modules 来减少管道构建时间 但我遇到了无法解决的错误 我正在使用 cypress 进行测试 这是我的天蓝色管道 Node js Build
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 是否可以阻止在每个 HTTP 请求中发送 cookie?

    我最近发现 这里 每个网络请求都会发送浏览器cookie吗 https stackoverflow com questions 1336126 does every web request send the browser cookies
  • 如何使用 Browserify 获取 html 模板

    我正在尝试找出一种简单的方法 在脚本中需要 html 模板 然后从 CLI 运行 browserify 假设我想获取一个模板并将其附加到正文中 index js var template require template html docu
  • Android:如何以编程方式仅圆化位图的顶角?

    我目前正在使用这段代码 Override public Bitmap transform Bitmap source Bitmap result Bitmap createBitmap source getWidth source getH
  • Google OR-Tools:无法运行 java 示例,java.lang.UnsatisfiedLinkError:java.library.path 中没有 jniortools

    我是java新手 我想尝试google or tools来解决车辆路由问题 只是尝试运行 java 示例here https developers google com optimization introduction run progr
  • 如何在 Mongo 聚合管道的 $unwind 阶段保留零长度值?

    我正在使用聚合管道编写 Mongo 查询 在聚合过程中 我需要 unwind领域之一 但是 我不想要 unwind排除该字段具有零长度数组的条目 因为我仍然需要它们进一步深入管道 我的领域叫做items它是一个对象数组 每个对象包含两个值
  • java.lang.NoClassDefFoundError:com.google.ads.AdView

    我正在尝试将 admob 广告合并到我的应用程序中 到目前为止我已经添加了以下代码 在我的应用程序主要活动的 onCreate 方法中 adView new AdView this AdSize BANNER my code number
  • SAXParseException:找不到元素“定义”的声明

    我对 camunda 和 DMN 完全陌生 我试图在 spring boot 中运行 DMN 示例 链接在这里 https github com camunda camunda bpm examples tree master dmn en
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • git下载别人的代码

    1 打开别人github上的源码地址 点击Clone or download 2 拷贝链接 3 通过git clone URL来下载 此外 还可以通过pwd来查看当前目录的路径 一般都是下载到当前目录下 注意 前提是自己的github上已添
  • 【剑指offer】数据结构——树

    目录 数据结构 树 直接解 剑指offer 07 重建二叉树 剑指offer 08 二叉树的下一个结点 剑指offer 26 树的子结构 剑指offer 27 二叉树的镜像 剑指offer 28 对称的二叉树 剑指offer 32 1 从上
  • Opencv中circle(),line(),cv2.rectangle(),cv2.putText()

    Opencv中circle line cv2 rectangle cv2 putText 一 circle 画圆 cv2 circle 方法用于在任何图像上绘制圆 用法 cv2 circle image center radius colo
  • 【OCR文本识别系列】Read Like Humans: Autonomous, Bidirectional and Iterative Language Modeling for Scene Tex

    read like humans 是中科大在2021年发在CVPR上的论文 论文链接 链接 代码链接 链接 视觉模型 class BaseVision Model def init self config super init config
  • QT 读写CSV文件

    目录 一 CSV的结构 二 源码简析 三 源码 一 CSV的结构 CSV文件 也称为逗号分隔值文件 顾名思义 就是用逗号和换行符分隔开的文件 下面举个例子就很清楚了 例如我有一个class csv文件 如果用表格软件打开 即如下 如果用记事
  • DVWA全等级通关教程(完结)

    Brute Force暴力破解 DVWA之Commend Injection 命令行注入 Cross Site Request Forgery CSRF 跨站请求伪造 File Inclusion 文件包含 File Upload 文件上传
  • vue中使用mapboxgl 加载天地图初始化并打点marker以及逆地理编码

    1 首先这个是中文文档地址开发文档 Mapbox 2 先注册一个token 具体文档流程 这边不过多介绍 3 下载npm install mapbox gl save 4 不多说 直接上代码 HTML中先创建一个盒子有宽高 id 还有记得引
  • 【maven】maven dependencyManagement 锁定Jar包版本

    1 概述 视频地址 maven dependencyManagement 锁定Jar包版本
  • 链栈之C++实现

    链栈是借用单链表实现的栈 其不同于顺序栈之处在于 1 链栈的空间是程序运行期间根据需要动态分配的 机器内存是它的上限 而顺序栈则是 静态分配内存的 2 链栈动态分配内存的特性使得它一般无需考虑栈溢出的问题 链栈的的组织结构如下图所示 容易发
  • 2021-11-06 液位控制滤波

    1 原文连接 我用 CSDN 这个app发现了有技术含量的博客 小伙伴们求同去 液位控制 一起来围观吧 https blog csdn net weixin 34405557 article details 93934030 utm sou
  • 请谈谈你对云计算的理解

    一 请谈谈你对云计算的理解 1 云计算产生的背景 随着并行计算 分布计算 网格计算 虚拟化 SOA 容错技术 网络带宽等关键技术日趋成熟 通过网络访问非本地的计算服务 包括数据处理 存储和信息服务等 的条件越来越成熟 多种技术的融合就产生了
  • img 图片固定大小 图片不糊 object-fit

    div h2 object fit fill h2 img src https interactive examples mdn mozilla net media examples plumeria jpg alt MDN Logo cl
  • Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。(代码52)...

    由未签名驱动导致的键鼠装无法使用的问题 usb 问题失效 要是win 10的话 导致的结果就是 无线键鼠套装无法使用 解决办法是 1 按下shift 按键 点击重启按钮 重启后 2 疑难解答 gt 启动 gt f7 禁用未签名强制验证 3
  • chatgpt提问示例指南

    担任雅思写作考官 我希望你假定自己是雅思写作考官 根据雅思评判标准 按我给你的雅思考题和对应答案给我评分 并且按照雅思写作评分细则给出打分依据 此外 请给我详细的修改意见并写出满分范文 第一个问题是 It is sometimes argu
  • RHCE第五次作业

    1 总结变量的类型及含义 2 实现课堂案例计算长方形面积 6种方式 3 定义变量url https blog csdn net weixin 45029822 article details 103568815 通过多种方法实现 1 截取网
  • 2-2-7 React 几个用Hooks的小技巧

    1 Hooks 控制流 if useEffect gt Hooks是对行为的声明 if else 是分支控制 不是声明的一部分 从理论上不应该有声明在控制流之下 在React内部通过Hooks的词法顺序来区分不同的Hook 2 Stacko
  • 在PyCharm上安装TENSORFLOW

    上周联系了一下南科大的老师 老师比较和蔼可亲 安排我先学习一下MNIST数据集进行深度学习方向图像识别的入门 本来上周应该要完成的但还是因为搭建平台 学校实训等各方面原因 没能及时完成 特别是在想用pycharm用来安装tensorflow
  • 台式计算机怎么连接蓝牙 win10,win10台式电脑蓝牙怎么开启(开启电脑蓝牙的步骤图)...

    原标题 win10台式电脑蓝牙怎么开启 开启电脑蓝牙的步骤图 虽然WiFi无线连接现在是主流 但蓝牙无线连接仍然以独特的优势得以在许多设备中保留 例如Win10动态锁自动锁定功能就是利用电脑与手机的蓝牙连接实现的 下面MS酋长就来分享一下W
  • 找回微信聊天记录-unbaksdpak解包软件图文教程

    前几天用小米助手备份恢复后微信聊天记录丢失 上网找资料搞鼓了一天终于找回了聊天记录 在上个分享帖子里有详细介绍了找回过程 但有机友某些步骤看不懂 要我再出个图文教程 我想主要应该是GitHub上的解包软件不会用吧 这次主要讲一下unbaks
  • 3分钟入门:Blob 对象的了解与创建

    Blob 对象 Blob 英文全称 binary large object 是指二进制类型大对象 Blob 对象表示不可变的 类似文件对象的原始数据 即它是类似文件对象的二进制数据 可以像操作 File 对象一样操作 Blob 对象 但话又