浏览器中File,FileReader,Blob, FormData, ArrayBuffer等对象对照剖析

File对象:担任处理那些以文件情势存在的二进制数据,也就是操纵当地文件;
FileList对象:File对象的网页表单接口;
FileReader对象:担任将二进制数据读入内存内容;
URL对象:用于对二进制数据天生URL。

1.File

供应了以下的元信息,经由过程FileList中的单个文件挪用
name:文件名,该属性只读。
size:文件大小,单元为字节,该属性只读。
type:文件的MIME范例,假如区分不出范例,则为空字符串,该属性只读。
lastModified:文件的上次修正时候,花样为时候戳。
lastModifiedDate:文件的上次修正时候,花样为Date对象实例。

2.FileList

参照http://javascript.ruanyifeng.com/htmlapi/file.html

个中申明的两个FileList
(1)运用input上传文件,直接经由过程 <input type="file" id="input" onchange="console.log(this.files.length)" multiple />,个中this.files就是FileList
(2)运用拖拽的体式格局

    function(evt){
        var files = evt.dataTransfer.files; // FileList object.
    }

3.FileReader

FileReader API用于读取文件,即把文件内容读入内存。它的参数是File对象或Blob对象。

(1)readAsBinaryString(Blob|File):返回二进制字符串,该字符串每一个字节包括一个0到255之间的整数。
(2)readAsText(Blob|File, opt_encoding):返回文本字符串。默许情况下,文本编码花样是’UTF-8’,能够经由过程可选的花样参数,指定其他编码花样的文本。
(3)readAsDataURL(Blob|File):返回一个基于Base64编码的data-uri对象。
(4)readAsArrayBuffer(Blob|File):返回一个ArrayBuffer对象。

4.Blob

参照http://javascript.ruanyifeng.com/htmlapi/file.html

1.全称Binary Large Object,即二进制大数据对象,供应响应的接口;其他操纵二进制的对象都是建立在Blob基本之上,并继续了其属性和要领。

2.Blob只要两个属性,分别为size和type;
size:二进制数据的大小,单元为字节。
type:二进制数据的MIME范例,悉数为小写,假如范例未知,则该值为空字符串。

3.相干要领 】
(1)Blob组织函数,接收两个参数。第一个参数是一个包括现实数据的数组,第二个参数是数据的范例,这两个参数都不是必须的。
(2)Blob对象的slice要领,将二进制数据根据字节分块,返回一个新的Blob对象。

5.FormData

6.ArrayBuffer

7.Canvas

8.URL

URL对象用于天生指向File对象或Blob对象的URL。

var objecturl =  window.URL.createObjectURL(blob);//天生 
window.URL.revokeObjectURL(objectURL);//是失效

9.将Base64转化为Form-Data情势

function base64ToFile (baseUrl) {
  let byteString = window.atob(baseUrl.split(',')[1])
  let mimeString = baseUrl.split(',')[0].split(':')[1].split(';')[0]

  // 范例数组
  let ia = new Uint8Array(byteString.length)
  for (let i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i)
  }
  let formdata = new window.FormData()
  let file = new window.Blob([ia], {
    type: mimeString
  })
  formdata.append('file', file, 'cms.' + mimeString.split('/')[1])
  return formdata
}
    原文作者:pengj
    原文地址: https://segmentfault.com/a/1190000007806465
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞