Blob的基本用法

一、概念:

Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

Blob 表示的不一定是 JavaScript 原生格式的数据。File 接口基于 Blob,继承了 blob 的功能并将其扩展以支持用户系统上的文件。

二、创造Blob:

要从其他非 blob 对象和数据构造一个 Blob,请使用 Blob() 构造函数。要创建一个 blob 数据的子集 blob,请使用 slice() 方法。

三、构造函数:

Blob()

返回一个新创建的 Blob 对象,其内容由参数中给定的数组拼接组成。

构造函数语法:

Blob 构造函数的语法如下:

new Blob(array, options);

参数说明:

  1. array (必需):

    const data = new Blob(["Hello, world!"], { type: 'text/plain' });

    • 这是一个包含一系列数据源的数组。数据源可以是字符串、ArrayBufferUint8ArrayBlob 或其他支持数据流的对象。

    • 例如,可以将文本字符串、二进制数据或现有的 Blob 对象作为数组元素传递。

  2. options (可选):

    示例:

    const data = new Blob(["Hello, world!"], { type: 'text/plain', endings: 'native' });
    • 这是一个对象,提供关于 Blob 的附加选项,常见的属性如下:

    • type:表示 Blob 的 MIME 类型,通常是一个字符串。例如 'text/plain''image/png' 等。

endings:这个属性决定字符串中的换行符的行为。它可以是以下之一:

  • 'transparent':表示换行符会保留原样,不会被转换(默认)。

  • 'native':表示使用操作系统本地的换行符(例如,在 Windows 上是 \r\n,在 Linux 上是 \n)。

举例说明:

  1. 创建一个包含文本的 Blob

    const blob = new Blob(["This is some text"], { type: "text/plain" });

    这里,array 包含了一个文本字符串 "This is some text"typetext/plain,表示这个 Blob 是纯文本。

  2. 创建一个包含多个部分的 Blob

    const part1 = new Blob(["Hello"], { type: "text/plain" });
    const part2 = new Blob([" World!"], { type: "text/plain" });
    const combined = new Blob([part1, part2], { type: "text/plain" });

    在这个例子中,combined 是由两个 Blobpart1part2)合并而成的。

结论:

Blob的构造函数接受两个参数:

  1. array: 一个包含二进制数据的数组,支持多种数据类型。

  2. options (可选): 一个配置对象,允许指定 Blob 的类型和其他细节。

四、实例属性:

Blob.size 只读

Blob 对象中所包含数据的大小(字节)。

Blob.type 只读

一个字符串,表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。

Blob.type

在Web开发中,Blob 对象用于表示不可变的原始数据的类文件对象。Blob 可以包含不同类型的文件数据,Blob 对象有一个重要的属性:type,它表示数据的 MIME 类型(也称为媒体类型)。

Blobtype 值通常用于标识数据的格式或类型。以下是一些常见的 type 值:

常见的 Blob type 值:

  1. 图片类型

    image/jpeg:JPEG 图片。

    image/png:PNG 图片。

    image/gif:GIF 图片。

    image/webp:WEBP 图片。

    image/svg+xml:SVG 矢量图。

  2. 音频类型

    audio/mpeg:MP3 音频文件。

    audio/wav:WAV 音频文件。

    audio/ogg:OGG 音频文件。

    audio/mp4:MP4 音频文件。

    audio/webm:WEBM 音频文件。

  3. 视频类型

    video/mp4:MP4 视频文件。

    video/webm:WEBM 视频文件。

    video/ogg:OGG 视频文件。

  4. 文档类型

    • application/pdf:PDF 文档。

    • application/msword:Microsoft Word 文档。

    • application/vnd.openxmlformats-officedocument.wordprocessingml.document:Microsoft Word (.docx) 文档。

    • application/vnd.ms-excel:Microsoft Excel 文件。

    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:Microsoft Excel (.xlsx) 文件。

    • application/zip:ZIP 压缩文件。

  5. 文本类型

    text/plain:纯文本文件。

    text/html:HTML 文件。

    text/css:CSS 文件。

    text/javascript:JavaScript 文件。

    text/xml:XML 文件。

    text/csv:CSV 文件。

  6. JSON 类型

application/json:JSON 文件。

      7.其他类型

application/octet-stream:任意二进制数据流,通常用作默认的二进制 MIME 类型。

application/x-www-form-urlencoded:通常用于表单数据提交的 MIME 类型。

如何使用 Blobtype 属性:

在创建 Blob 时,可以指定类型。如果不指定类型,则默认为空字符串 ""

// 创建一个包含文本数据的 Blob
const textBlob = new Blob(["Hello, World!"], { type: "text/plain" });
​
// 创建一个包含图片数据的 Blob
const imageBlob = new Blob([imageData], { type: "image/jpeg" });

MIME 类型的应用:

  • 浏览器:通过 type 属性,浏览器可以识别文件并根据文件的 MIME 类型决定如何处理它(如显示图片、播放音频或视频等)。

  • 文件上传:在上传文件时,服务器也会根据 type 值来识别文件类型。

五、实例方法:

Blob.slice()

返回一个新的 Blob 对象,其中包含调用它的 blob 的指定字节范围内的数据。

Blob.text()

返回一个 promise,其会兑现一个包含 Blob 所有内容的 UTF-8 格式的字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值