JavaScript Blob

JavaScript Blob

Blob(Binary Large Object)对象是JavaScript中的一个用于表示不可变的、原始数据的类。Blob 表示的数据不一定是JavaScript原生的,它可以是图片、音频、视频、文件等二进制数据。Blob 对象提供了一种处理这种二进制数据的方式,而不需要将其转换为字符串,这样可以减少数据转换时的性能损耗和可能的数据损坏问题。

1. 创建Blog

纯文本

new Blob(['hello world'], {type: 'text/plain'})

JSON

new Blob([JSON.stringify({name: 'yimt', age: 123})], {type: 'application/json'})

字节数组

const uint8Array = new Uint8Array(3);
for (let i = 0; i < uint8Array.length; i++) {
    uint8Array[i] = 0x61 + i
}
const blob = new Blob([uint8Array], {type: 'application/octet-stream'})

2. 读取Blob

使用FileReader类

// 创建测试blob
const blob = new Blob(['hello world'], {type: 'text/plain'})
// 创建FileReader
const reader = new FileReader()
// 监视加载完成事件
reader.onloadend = function (e) {
    console.log(e.target.result)
}
// 指定读取对象
reader.readAsText(blob)

使用text方法(读取字符串)

const blob = new Blob(['hello world'], {type: 'text/plain'})
console.log(await blob.text())

使用arrayBuffer方法(读取字节)

// 创建Uint8Array
const uint8Array = new Uint8Array(3)
// 初始化数据为abc
for (let i = 0; i < uint8Array.length; i++) {
    uint8Array[i] = 0x61 + i
}

// 创建Blob
const blob = new Blob([uint8Array], {type: 'application/octet-stream'})
// 读取字节
const arrayBuffer = await blob.arrayBuffer()
// 字节转字符串
const decoder = new TextDecoder('UTF-8')
const msg = decoder.decode(arrayBuffer)
console.log(msg) // abc

3. 下载

// 创建测试blob
const blob = new Blob(['hello world'], {type: 'text/plain'})
// 创建一个指向这个Blob的URL
const url = URL.createObjectURL(blob)

const a = document.createElement('a')
a.href = url
a.download = 'example.txt'
a.click()

// 释放创建的URL对象
URL.revokeObjectURL(url)

4. 参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值