zoukankan      html  css  js  c++  java
  • 二进制学习—Blob,ArrayBuffer、File、FileReader和FormData的区别

    前言:

    • Blob、ArrayBuffer、File、fileReader、formData这些名词总是经常看到,知道一点又好像不知道,像是同一个东西好像又不是,总是模模糊糊,最近终于下决心要弄清楚。
    • 为了更好的理解每个名词的意义,本文先用尽量通俗的语言解释下各自的区别,大概能在宏观上区分之后,再会在其他博文中做单个解释。
    • 这些名词里,Blob、ArrayBuffer、File可以归为一类,它们都是数据;而fileReader算是一种工具,用来读取数据;formData可以看做是一个应用数据的场景。因此,我们首先着重区分Blob、ArrayBuffer、File,然后再对fileReader和formData做简要介绍。

    blob

    概念理解

    • Blob的全称是binary large object,表示二进制大对象,并不是前端的特有对象,而是计算机界的通用术语,MySql/Oracle数据库中,就有一种Blob类型,专门存放二进制数据。
    • MDN中官方的解释是:一个Blob对象就是一个包含有只读原始数据的类文件对象。通俗点,我们可以直接将Blob看做是一个不可修改的二进制文件。

    使用

    • 构造函数

    直接通过new Blob()就可以创建一个Blob对象

    var aBlob = new Blob( array, options );
    

    array(可选):是一个由ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array ,或者其他类似对象的混合体。(暂时可以不用理解,就可以看作是一堆数据)
    options(可选):一个对象,用来
    设置Blob的一些属性。主要的是一个type属性,表示Blob的类型(其他暂时也不用管)。
    简单来说,就是可以通过向new Blob()传一堆数据,生成一个Blob对象

    • 属性

    Blob.size(只读):Blob对象中包含的数据大小(字节)
    Blob.type(只读):表明该Blob对象所包含数据的MIME类型。例如若为图片,此字段就类似为’image/jpeg‘。如果类型未知,则该值为空字符串。

    • 方法

    Blob只有一个slice方法,实现对文件的分割(注意这里并不违背Blob的只读性,slice只是只是复制指定范围内的Blob数据)。

    Blob.slice(start, end ,contentType)
    

    start:开始索引,可以为负数,语法类似于数组的slice方法。默认值为0。
    end:结束索引,可以为负数,语法类似于数组的slice方法。默认值为最后一个索引。
    contentType:新的Blob对象的MIME类型,这个值将会成为新的Blob对象的type属性的值,默认为一个空字符串。

    小结

    简单来说,Blob就是一个只读的二进制文件,我们可以知道它的文件大小(size),文件类型(type),并可以对其作出分割(slice)。

    file

    概念理解

    • file根据名字很容易理解,就是纯粹的文件。通常,表示我们使用<input type="file">选择的FileList对象,或者是使用拖拽操作搞出的DataTransfer对象。
    • file对象也是二进制对象,从属于Blob;也就是说file是Blob里的一个小类,Blob的属性和方法都可以用于file,而file自己也有自己特有的属性和方法。对于Blob和file都有的属性,推荐使用Blob的属性

    FormData

    准确来说,FormData其实与上述内容关系就不大了。它是XMLHttpRequest Level 2添加的一个新的接口,我们可以通过JavaScript用一些键值对来模拟一系列表单控件。FormData的最大优点就是,比起普通的ajax, 使用FormData我们可以异步上传一个二进制文件,而这个二进制文件,就是我们上面讲的Blob对象。

    UR

    L.createObjectURL()

    URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象

    语法

    objectURL = URL.createObjectURL(object);
    

    参数

    返回值

    一个DOMString包含了一个对象URL,该URL可用于指定源 object的内容。

    参考:https://www.cnblogs.com/youhong/p/10875190.html

  • 相关阅读:
    2019年9月笔记
    2019年8月笔记
    2019年7月笔记
    2019年5月笔记
    2019年6月笔记
    2019年4月笔记
    JAVA MAC 配置
    ionic3 打包发布,以安卓说明
    Workman websocket 握手连接
    关于mysql数据库的表概况 ,查看表状态
  • 原文地址:https://www.cnblogs.com/cjh1996/p/12763962.html
Copyright © 2011-2022 走看看