JavaScript Blob

17 Mar 2025 | 5 分钟阅读

Blob 是表示未处理数据的不可变对象。文件是 Blob 的派生,它来自文件系统的数据。Blob 使我们能够在客户端创建类文件对象,然后可以将这些对象传递给期望 URL 而不是需要服务器提供文件的 API。在本文中,我们将通过一些示例来讨论 JavaScript Blob。

什么是 JavaScript Blob?

Blob 对象就是一个字节集合,其中包含存储在文件中的数据。Blob 看起来像是对实际文件的引用,但实际上并非如此。Blob 与简单文件具有相同的大小MIME 类型。Blob 数据存储在用户的内存中,这取决于浏览器功能和 Blob 的大小。文件是 Blob 的派生,可以在使用文件的相同地方使用 Blob。Blob 对于存储二进制数据非常有用,因为可以轻松地将它们的內容读取为 ArrayBuffer

Blob 可以由 Web 浏览器存储在内存或磁盘上,它们可以表示非常大的数据块,这些数据块太大而无法放入主内存,除非首先使用 slice () 方法将其分成更小的块。

创建 Blob 的语法

创建 JavaScript Blob 的语法可以定义为

在这个语法中,

  • Blobparts:这是一个 Blob、BufferSource 和字符串值的数组。
  • Options:这是一个可选对象。
  • Type:这是一个 Blob 类型,通常是 MIME 类型,如 image.png。

示例

让我们看一个示例,以了解如何在程序中创建 JavaScript Blob。

输出:执行此代码后,我们将在屏幕截图中看到如下所示的输出。

JavaScript Blob

在此程序中,我们仅创建了一个 id“main” 的简单 <p> 元素。

Blob 对象

Blob 对象用于表示一个不可变的 Blob 对象,该对象表示原始数据。Blob 像文件一样,具有大小和 mime-type 属性。

示例

让我们看一个示例,以了解如何在 JavaScript 中创建 Blob 对象。

输出:执行此代码后,我们将在屏幕截图中看到如下所示的输出。

JavaScript Blob

正如我们所见,有一个“点击此处”按钮。当我们点击“点击此处”按钮时,它会显示屏幕截图中所示的結果。

JavaScript Blob

JavaScript Blob URL

我们有 Blob URL,它们引用 Blob,就像我们有文件 URL 引用本地文件系统中的实际文件一样。如果 Blob URL 类似于常规 URL,那么它们可以在常规 URL 可以使用的任何地方使用。JavaScript Blob 可以轻松地用作 <img> 标签 和其他标签的 URL 来显示其内容。createObjectURL 对象可用于获取指向 Blob 的 Blob URL。

示例

让我们看一个示例,以了解如何在程序中使用 Blob URL。

输出:执行此代码后,我们将在屏幕截图中看到如下所示的输出。

JavaScript Blob

在这里,我们可以看到有一个链接。当我们点击链接时,将从该链接下载一个文本文件,如下面的屏幕截图所示。

JavaScript Blob

Blob 到 base64

将 Blob 转换为 base64 编码字符串是 URL.createObjectURL 的一种替代方法。此编码通过将其加密为超安全的“可读”字符字符串(ASCII 码范围为 0 到 64)来保护二进制数据。更重要的是,此编码可用于“data-urls”。要将 Blob 转换为 base64,我们将使用内置的 FileReader 对象。

数据 URL 具有以下语法

这些 URL 可以在任何地方使用,就像“常规” URL 一样。

示例

让我们看一个示例,以了解如何在 JavaScript Blob 中使用 Blob 到 base64。

输出:执行此代码后,我们将在屏幕截图中看到如下所示的输出。当我们执行程序时,它会在运行时直接下载文件。

JavaScript Blob

JavaScript Blob 的优缺点

JavaScript Blob 有一些优点和缺点。其中一些如下

JavaScript Blob 的优点

  1. Blob 是在数据库中存储和引用大型二进制数据文件的便捷方法。
  2. Blob 数据库备份包含所有数据。
  3. 使用 Blob 时,通过权限管理可以轻松设置访问权限。

JavaScript Blob 的缺点

  1. 由于所需的磁盘空间量以及访问时间,Blob 的效率低下。
  2. 并非所有数据库都支持 Blob。
  3. 由于 Blob 的文件大小较大,创建备份需要很长时间。