javascript 之 Blob对象
Blob = Binary Large Object 的缩写,直译为二进制大对象,虽然在大多数前端开发中并不常见,但实际上在MYSQL数据库中,可以通过设置一个BLOB类型的数据来存储一个BLOB对象的内容
使用blob对象是在接受后台返回的数据流,导出数据,下载excel是用于处理后端返回的数据流,后端返回的是一个下载链接,类似这样的:
Blob()
Blob()
构造函数返回一个新的 Blob
对象。 blob的内容由参数数组中给出的值的串联组成。
var aBlob = new Blob( array, options );
- array 是一个由
ArrayBuffer
,ArrayBufferView
,Blob
,DOMString
等对象构成的Array
,或者其他类似对象的混合体,它将会被放进Blob
。DOMStrings会被编码为UTF-8。 - options 是一个可选的
BlobPropertyBag
字典,它可能会指定如下两个属性: type
,默认值为""
,它代表了将会被放入到blob中的数组内容的MIME类型。endings
,默认值为"transparent"
,用于指定包含行结束符\n
的字符串如何被写入。 它是以下两个值中的一个:"native"
,代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者"transparent"
,代表会保持blob中保存的结束符不变
创建一个Blob对象
本段落大致看看,知道如何创建Blob对象就可以。
const blob = new Blob([response.data], {
type: "application/vnd.ms-excel;charset=utf-8"
});
对象上的方法
1、 Blob.size
获取blob对象的大小(字节)
2、Blob.type
获取文件类型
Blob.slice([start[, end[, contentType]]])
返回一个新的Blob对象,包含了源Blob对象中指定范围内的数据。通常可用于大文件截取上传
生成Blob链接
可以借助window.URL(点我跳转到官网)
对象上的方法。
1、URL.createObjectURL(blob);
如果传入的参数是blob对象的话,则可以生成一个blob链接。并赋值给了a标签的href属性。通过a标签的download属性触发下载方法,下载名为fileNamet的文本文档。
const elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink); //
elink.click(); //默认点击a标签触发下载,
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
2、默认点击a标签触发下载,
3、URL.revokeObjectURL()
静态方法用来释放一个之前通过调用 URL.createObjectURL() 创建的已经存在的 URL 对象。当你结束使用某个 URL 对象时,应该通过调用这个方法来让浏览器知道不再需要保持这个文件的引用了。日常应用
1、可用于隐藏视频播放器的真实地址
由于需要后台支撑,故可参考https://blog.csdn.net/qincidong/article/details/82781699
2、使用 createObjectURL(blob) 输出页面,移动端长按保存,转发。
3、开源代码库可以在线自定义配置文件并下载JSON,也可以通过blob的方式生成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!