什么是Blob?

Blob 是什么? 这里说的是一种Javascript的对象类型。

oracle 中也有类似的栏位类型。

[JS进阶] HTML5 之文件操作(file)

这一篇中用到了File对象,而实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承。

所以, 在大多数情况下,blob 对象和 file 对象可以用在同一个地方,例如,可以使用 FileReader 借口从 blob 读取数据,也可以使用 URL.createObjectURL() 从 blob 创建一个新的 URL 对象。

如何创建Blob

1. 使用旧方法创建 Blob 对象。

旧的方法使用 BlobBuilder 来创建一个Blob 实例,并且使用一个 append() 方法,将字符串(或者 ArrayBuffer 或者 Blob,此处用 string 举例)插入,一旦数据插入成功,就可以使用 getBlob() 方法设置一个 mime 。

  <script>var builder = new BolbBuilder();builder.append("Hello World!");var blob = builder.getBlob("text/plain");</script>

2. 新方法创建Blob 对象

在新的方法中直接可以通过 Blob() 的构造函数来创建了。
构造函数,接受两个参数,第一个为一个数据序列,可以是任意格式的值,例如,任意数量的字符串,Blobs 以及 ArrayBuffers。第二个参数,是一个包含了两个属性的对象,其两个属性分别是:

type -- MIME 的类型。

endings -- 决定 append() 的数据格式,(数据中的 \n 如何被转换)可以取值为 "transparent" 或者 "native"(t* 的话不变,n* 的话按操作系统转换;t* 为默认) 。

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

Blob的应用

1. 大文件分割 (slice() 方法)

slice() 方法接受三个参数,起始偏移量,结束偏移量,还有可选的 mime 类型。如果 mime 类型,没有设置,那么新的 Blob 对象的 mime 类型和父级一样。

当要上传大文件的时候,此方法非常有用,可以将大文件分割分段,然后各自上传,因为分割之后的 Blob 对象和原始的是独立存在的。

不过目前浏览器实现此方法还没有统一,火狐使用的是 mozSlice() ,Chrome 使用的是 webkitSlice() ,其他浏览器则正常的方式 slice()

可以写一个兼容各浏览器的方法:

    function sliceBlob(blob, start, end, type) {type = type || blob.type;if (blob.mozSlice) {return blob.mozSlice(start, end, type);} else if (blob.webkitSlice) {return blob.webkitSlice(start, end type);} else {throw new Error("This doesn't work!");}}

2.  在Chrome 中指定下载的文件名;

具体可以参考:

Web 端 js 导出csv文件(使用a标签)

浏览器支持

[JS进阶] JS 之Blob 对象类型相关推荐

  1. 【学习笔记】JS进阶语法一window对象

    内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:打开/关闭新窗口 <!DOCTYPE html> <html><head> ...

  2. 【学习笔记】JS进阶语法一document对象

    内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:write()方法和writeln()方法区别 <!DOCTYPE html> <html& ...

  3. js Blob对象介绍

    2019独角兽企业重金招聘Python工程师标准>>> 什么是Blob?Blob是一种JavaScript的对象类型.HTML5的文件操作对象,file对象就是Blob的一个分支或说 ...

  4. js中关于Blob对象的介绍与使用

    js中关于Blob对象的介绍与使用 blob对象介绍 一个 Blob对象表示一个不可变的, 原始数据的类似文件对象.Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是js ...

  5. 自学JavaScript第二天- JS 进阶: 对象 函数

    自学JavaScript第二天- JS 进阶: 对象 函数 对象进阶 构造函数 使用类 类的继承 静态方法 函数进阶 方法 装饰器 高阶函数 map / reduce filter sort ever ...

  6. js进阶课程 12-9 jquery的事件对象event的方法有哪些?

    js进阶课程 12-9 jquery的事件对象event的方法有哪些? 一.总结 一句话总结:三组六个,阻止默认事件一组,阻止冒泡一组,阻止冒泡和剩余事件一组. 1.事件的默认动作指什么? 比如点a标 ...

  7. js中的对象类型与具体的对象

    js 基础学习地址:http://www.w3school.com.cn/ JS对象类型:本地对象.宿主对象(浏览器对象).内置对象 本地对象:独立于宿主环境的ECMAScript实现提供的对象,简单 ...

  8. js二进制流转Blob对象。Blob对象再转File对象

    JavaScript 二进制转文件 使用js将blob对象转file对象 前端处理后端返回的二进制流文件 js中Blob对象一般用法 js中关于Blob对象的介绍与使用 上传的文件对象 完整代码实例 ...

  9. JS进阶 你真的掌握变量和类型了吗?

    Table of Contents 简言 导读 一.JavaScript数据类型 原始类型 对象类型 二.为什么区分原始类型和对象类型 2.1 不可变性 栈内存: 2.2 引用类型 堆内存: 2.3 ...

最新文章

  1. electron 剪贴板 截图_用electron开发了一个屏幕截图工具
  2. 字节流的 创建 写入文字 复制文件
  3. Dataset之MapillaryVistas:MapillaryVistas数据集的简介、下载、使用方法之详细攻略
  4. 各种网络监控拓扑图,十分齐全!
  5. ITK:将高斯噪声添加到特定图像
  6. snmp v3 参数_snmp v3 配置
  7. check的用法java_Java ChronoField checkValidValue()用法及代码示例
  8. Python基础知识(3)
  9. Atitit 传媒学院专业与课程表艾提拉总结 目录 1. 媒体分为感觉媒体、表示媒体、表现媒体、存储媒体和传输媒体 1 1.1. 1、感觉媒体 如文字、数据、声音、图形、图像等。 1 1.2. 表示
  10. Ruby静态分析工具检视:metric_fu, Simian, Saikuro以及其他
  11. 流量卡之家:物联网和人工智能如何实现环境可持续性
  12. VGA显示器屏幕文字模糊(稍有重影)的解决方案
  13. java版精简搜狗皮肤
  14. Chi-Plots和Kendall Plots
  15. SDH(标准DH)和MDH(改进DH)
  16. 使用Python合并Excel文件
  17. C++的学习心得和知识总结(十八)|基于EasyX实现 2048游戏 项目(C/C++版)
  18. 互联网晚报| 8月18日|未婚已育女性办理生育津贴不需要结婚证;拼多多将上线跨境电商平台;小米汽车将采用宁德时代麒麟和比亚迪刀片...
  19. 复数运算(友元函数)
  20. 湖北省潜江市谷歌高清卫星地图下载

热门文章

  1. vue项目微信分享之后路由链接被破坏怎么办
  2. UILabel 设置行间距
  3. SQL Sever2008 无法启动
  4. IOS的Target-action 设计模式
  5. 找回VisualStudio异常设置中丢失的“用户未处理的(User-unhandled)”列
  6. ZZ MMSEG 中文分词算法
  7. XAMPP中Apache因为端口原因不能启动的解决方法
  8. 3DMAX安装失败怎样卸载重新安装3DMAX,解决3DMAX安装失败的方法总结
  9. Spring MVC 使用问题与解决--HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
  10. 谁与争锋,2020腾讯广告算法大赛初赛正式启动