File、FileReader、Blob与Fromdata对象
File对象:可以用来获取某个文件的信息,还可以用来读取这个文件的内容。File对象是来自用户在一个 <input>
元素上选择文件后返回的FileList对象里,也可以是来自由拖放操作生成的 DataTransfer对象。
所有type为file的input都有一个files属性,里面包含了文件的详细信息。
1 |
|
DataTransfer:通过拖放动作,拖动到浏览器的数据。
DataURI对象:允许将一个小文件进行编码后嵌入到另外一个文档里,格式为
1 | data:[<MIME type>][;charset=<charset>][;base64],<encoded data> |
FileReader 对象:允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容。
readAsDataURL方法:开始读取指定的Blob对象或File对象中的内容。当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之。同时,result属性中将包含一个data:URL
格式的字符串以表示所读取文件的内容。
1 |
|
Blob对象:一个 Blob对象表示一个不可变的, 原始数据的类似文件对象。Blob表示的数据不一定是一个JavaScript原生格式。 File 接口基于Blob,继承 Blob功能并将其扩展为支持用户系统上的文件。
slice方法:Blob对象的slice方法,将二进制数据按照字节分块,返回一个新的Blob对象。
1 | var newBlob = oldBlob.slice(startingByte, endindByte); |
FormData对象:用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个”表单”,比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。
1 | const formdata = new FormData (form? : HTMLFormElement); |