浅谈 javascript 之 Blob对象

Blob = Binary Large Object 的缩写,直译为二进制大对象,虽然在大多数前端开发中并不常见,但实际上在MYSQL数据库中,可以通过设置一个BLOB类型的数据来存储一个BLOB对象的内容

使用blob对象是在接受后台返回的数据流,导出数据,下载excel是用于处理后端返回的数据流,后端返回的是一个下载链接,类似这样的:

<a href="blob:http://172.168.0.110:10000/67d67b99-4996-4607-badb-22420af5b8d8" download="%E9%61%A8%E8%AF%8A%E6%97%A5%E5%BF%97%U1%88%97%A8%A1%A8.xlsx">Download file</a>

我们需要通过blob对象来处理,需要模拟一个<a>标签来提供下载链接

          const link = document.createElement('a') // 创建一个a标签

          link.style.display = 'none'

         // 通过构造函数来实例化一个Blob对象

          const blob = new Blob([res.data], {

            type: 'application/vnd.ms-excel' // 数据类型

          })

          // res.data 一般为文件的 size, type, 所以blob值一般就是这些

          // 创建一个url 对象,并将blob实例作为参数传入,这样href的值就是以blob开头的一个文件流下载链接

         // "blob:http://127.0.0.1:8080/9b3e0266-9d56-4119-b3b9-38ccce875fd3"

         // objectURL = URL.createObjectURL(object), object 参数是一个用于创建 URL 的 File 对象、Blob 对象或                 者 MediaSource 对象。

          link.href = URL.createObjectURL(blob)

          const fileName = 'xxx.xlsx'

          link.download = fileName

          link.click()

创建一个Bolb对象 (构造函数来构建)

var blob = new Blob(array[optional], options[optional]);

构造函数,接受两个参数

第一个参数:为一个数据序列,可以是任意格式的值,例如,任意数量的字符串,Blobs 以及 ArrayBuffers。

第二个参数:用于指定将要放入Blob中的数据的类型(MIME)(后端可以通过枚举MimeType,获取对应类型:

MimeType mimeType = MimeType.toEnum(file.getContentType()))

  <script>
    var blob = new Blob(["Hello World!"],{type:"text/plain"})
  </script>

Blob对象的基本属性:

size :Blob对象包含的字节数。(readonly)

type : Blob对象包含的数据类型MIME,如果类型未知则返回空字符串。

Blob对象的基本方法: 

大文件分割 (slice() 方法),slice方法与数组的slice类似。

Blob.slice([start, [end, [content-type]]])

type : Blob对象包含的数据类型MIME,如果类型未知则返回空字符串。

也可参考以下博客,写的很详细:

https://www.jianshu.com/p/75bfd7cd9e1b

https://blog.csdn.net/weixin_41888813/article/details/83858343

https://www.jianshu.com/p/33564726aed8

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Blob 对象是一种表示不可变的二进制数据的类型,类似于文件对象。在 Web 开发中,Blob 对象主要用于处理二进制数据,例如上传和下载文件、处理音频和视频数据等。Blob 类型的对象可以通过构造函数 new Blob(data, options) 来创建,其中 data 是一个数组或者数组缓冲区,用于存储二进制数据;options 是一个可选参数,用于指定 Blob 对象的 MIME 类型。 Blob 对象具有以下特点: 1. Blob 对象是不可变的,即创建后无法修改。 2. Blob 对象具有 size 属性,表示 Blob 对象的大小(字节数)。 3. Blob 对象具有 type 属性,表示 Blob 对象的 MIME 类型。 对于 Blob 对象的基本用法,可以使用 slice 方法对 Blob 对象进行切割,生成新的 Blob 对象。slice 方法接受两个参数,start 和 end,表示切割的起始位置和结束位置(不包含结束位置),返回一个新的 Blob 对象。 例如,以下是 Blob 对象的基本用法的示例: ```javascript 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: ""} ``` 另外,Blob 对象创建时,可以传入不同类型的数据,例如字符串、数组、对象等。Blob 对象会根据传入的数据类型进行相应的处理。 例如,以下是创建 Blob 对象时传入不同类型数据的示例: ```javascript 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]); // Blob 对象的 size 为 1 var blob2 = new Blob([data1, data2]); // Blob 对象的 size 为 2 var blob3 = new Blob([data3]); // Blob 对象的 size 为 44 var blob4 = new Blob([JSON.stringify(data4)]); // Blob 对象的 size 为 14 var blob5 = new Blob([data4]); // Blob 对象的 size 为 15 var blob6 = new Blob([data3, data4]); // Blob 对象的 size 为 59 console.log(blob1); console.log(blob2); console.log(blob3); console.log(blob4); console.log(blob5); console.log(blob6); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值