更新时间:2022-10-25 来源:黑马程序员 浏览量:
Blob对象就是一个包含只读原始数据的类文件对象,其实File类型就派生子Blob类型,并且扩展了支持操作用户本地文件的功能。Blob对象可以直接调用构造函数来生成。
var fileParts=['<a>hey man</a>']; var myBlob=new Blob(fileParts, { "type":"text/xml"});
Blob对象还支持slice()方法,用于对数据进行切割:
var yourBlob=myBlob.slice(10,20);
File对象同样继承了Blob的slice()方法,可以利用此方法对File对象预先进行分割,然后再读取、上传,最后在服务器端进行组装——异步上传的原理就是这样。如果再记住分割点,这样即使网络中途断掉,也可以在下次传输时从断点续传。
除了都接受Blob和File对象,这些方法另外一个共同点是,由于JavaScript本身基于事件驱动,这些和平台相关的方法都是异步方法。即调用时立即返回,读取文件操作完成后再触发相应的load事件。
除了load事件,FileReader对象还会调用这样一些事件处理程序。
(1)onabort:当读取操作被终止时调用(调用abort方法)
(2)onerror:当读取操作发送错误时调用。
(3)onload:当读取操作成功完成时调用。
(4)onloadend:当读取操作完成时调用,不管是成功还是失败,该处理程序在onload或者onerror后调用。
(5)onloadstart:当读取操作将要开始之前调用。
(6)onprogress:在读取数据过程中周期性调用。该事件为最有用的事件,在加载较大的文件时,可以提供一个进度条让用户知道当前加载进度,不让用户产生焦躁感。