发表于: 2017-04-23 22:21:01
2 1015
今天完成的事情:
学习filereader资料。FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。
方法
abort():void 终止文件读取操作
readAsArrayBuffer(file):void 异步按字节读取文件内容,结果用ArrayBuffer对象表示
readAsBinaryString(file):void 异步按字节读取文件内容,结果为文件的二进制串
readAsDataURL(file):void 异步读取文件内容,结果用data:url的字符串形式表示
readAsText(file,encoding):void 异步按字符读取文件内容,结果用字符串形式表示
事件
onabort 当读取操作被中止时调用
onerror 当读取操作发生错误时调用
onload 当读取操作成功完成时调用
onloadend 当读取操作完成时调用,不管是成功还是失败
onloadstart 当读取操作将要开始之前调用
onprogress 在读取数据过程中周期性调用
读取方式
FileReader提供了四种不同的读取文件的方式。
readAsDataURL:readAsDataURL会将文件内容进行base64编码后输出。
readAsText:此方法可以通过不同的编码方式读取字符。readAsText读取文件的单位是字符,故对于文本文件,只要按规定的编码方式读取即可;而对于媒体文件(图片、音频、视频),其内部组成并不是按字符排列,故采用readAsText读取,会产生乱码,同时也不是最理想的读取文件的方式。
readAsBinaryString:与readAsText不同的是,readAsBinaryString函数会按字节读取文件内容。然而诸如0101的二进制数据只能被机器识别,若想对外可见,还是需要进行一次编码,而readAsBinaryString的结果就是读取二进制并编码后的内容。尽管readAsBinaryString方法可以按字节读取文件,但由于读取后的内容被编码为字符,大小会受到影响,故不适合直接传输,也不推荐使用。
readAsArrayBuffer:与readAsBinaryString类似,readAsArrayBuffer方法会按字节读取文件内容,并转换为ArrayBuffer对象。我们可以关注下文件读取后大小,与原文件大小一致。
这也就是readAsArrayBuffer与readAsBinaryString方法的区别。
明天计划的事情:
为input[type=file]添加事件,直接获取文件信息,查看学习资料——《HTML FileReader对象的方法》,读取文件,用fileReader生成image元素预览图片,创建一个空的FormData对象,然后用append方法逐个添加键值对。
遇到的问题:
感觉任务9的代码应该不会好写,网上搜了一下,反正不简单。
收获:
今天在家,没去办公室,下午收了个快递,大概有50斤左右吧,把它从1楼搬到4楼后,就眼前一片黑差点晕过去,后面三层楼一个好心的大哥帮我搬上去了。就因为这导致我在床上躺了半下午,这破身体完全不想说啥了。
评论