HTML5之FileReader读取文件
来源:互联网 发布:linux 防火墙配置 编辑:程序博客网 时间:2024/06/10 15:14
HTML5之FileReader接口读取文件
minsong 发布于 2016-05-09 17:57:46 浏览:8402 类型:原创 - 随笔 分类:HTML/CSS - HTML5 二维码: 作者原创 版权保护
HTML5之FileReader读取文件
用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。到目前为止,只有FF3.6+和Chrome6.0+实现了FileReader接口。
1.FileReader接口的方法
FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。
方法名 参数 描述
readAsBinaryString file 将文件读取为二进制编码
readAsText file,[encoding] 将文件读取为文本,其中第二个参数是文本的编码方式,默认值为 UTF-8
readAsDataURL file 将文件读取为DataURL
abort (none) 终端读取操作
2.FileReader接口事件
FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。
事件 描述
onabort 中断
onerror 出错
onloadstart 开始
onprogress 正在读取
onload 成功读取
onloadend 读取完成,无论成功失败
3.FileReader接口的使用
文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果,绝大多数的程序都会在成功读取文件的时候,抓取这个值。
var reader=new FileReader();
reader.onload = function() {
this.result;
};
//
var reader=new FileReader();
reader.onload = function(e) {
e.target.result;
};
例子1:
例子2:兼容IE的上传图片
示例3:有上传进度条
既然FileReader是异步读取文件内容,那么就应该可以监听它的读取进度。事实上,FileReader的onloadstart以及onprogress等事件,可以用来监听FileReader的读取进度。
在onprogress的事件处理器中,提供了一个ProgressEvent对象,这个事件对象实际上继承了Event对象,提供了三个只读属性:lengthComputable、loaded、total;通过以上几个属性,即可实时显示读取进度。w3c官网上对它的定义如下:
interface ProgressEvent : Event {
readonly attribute boolean lengthComputable;
readonly attribute unsigned long long loaded;
readonly attribute unsigned long long total;
};
如果处理的文件太大,可能会导致浏览器崩溃(chrome下一般都会崩溃掉,而firefox则不会,不过会触发FileReader的onerror事件,文件读取失败),所以为了安全地、正常地观察到文件读取进度,我们采用分段读取的方法来测试FileReader的进度条。
4.预览文本文件
这里主要用到FileReader的readAsText,对于诸如mimetype为text/plain、text/html等文件均认为是文本文件,即minetype为text开头都能在本例中预览。
由于需要在页面上预览文本,如果使用innerHTML插入文本的话,则需要对html中一些特殊字符进行实体编码,这样才能保证正常显示文本。
encodeHTML方法:
5、分段读取文件内容(slice)
有的时候,一次性将一个大文件读入内存,并不是一个很好的选择(如果文件太大,使用FileReader读取文件内容,可能直接导致浏览器崩溃),w3c也想到了这种情况,所以html5允许对文件进行分段读取。
chrome以及firefox已经将File slice api调整为如下:
var blob;
if(file.webkitSlice) { //Blob中的方法
blob = file.webkitSlice(start, end + 1, 'text/plain;charset=UTF-8');
} else if(file.mozSlice) {
blob = file.mozSlice(start, end + 1, 'text/plain;charset=UTF-8');
}
本例使用了FileReader的onloadend事件来检测读取成功与否,如果用onloadend则必须检测一下FileReader readyState,因为read abort时也会触发onloadend事件,如果我们采用onload,则可以不用检测readyState。
用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。到目前为止,只有FF3.6+和Chrome6.0+实现了FileReader接口。
1.FileReader接口的方法
FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。
方法名 参数 描述
readAsBinaryString file 将文件读取为二进制编码
readAsText file,[encoding] 将文件读取为文本,其中第二个参数是文本的编码方式,默认值为 UTF-8
readAsDataURL file 将文件读取为DataURL
abort (none) 终端读取操作
2.FileReader接口事件
FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。
事件 描述
onabort 中断
onerror 出错
onloadstart 开始
onprogress 正在读取
onload 成功读取
onloadend 读取完成,无论成功失败
3.FileReader接口的使用
文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果,绝大多数的程序都会在成功读取文件的时候,抓取这个值。
var reader=new FileReader();
reader.onload = function() {
this.result;
};
//
var reader=new FileReader();
reader.onload = function(e) {
e.target.result;
};
例子1:
例子2:兼容IE的上传图片
示例3:有上传进度条
既然FileReader是异步读取文件内容,那么就应该可以监听它的读取进度。事实上,FileReader的onloadstart以及onprogress等事件,可以用来监听FileReader的读取进度。
在onprogress的事件处理器中,提供了一个ProgressEvent对象,这个事件对象实际上继承了Event对象,提供了三个只读属性:lengthComputable、loaded、total;通过以上几个属性,即可实时显示读取进度。w3c官网上对它的定义如下:
interface ProgressEvent : Event {
readonly attribute boolean lengthComputable;
readonly attribute unsigned long long loaded;
readonly attribute unsigned long long total;
};
如果处理的文件太大,可能会导致浏览器崩溃(chrome下一般都会崩溃掉,而firefox则不会,不过会触发FileReader的onerror事件,文件读取失败),所以为了安全地、正常地观察到文件读取进度,我们采用分段读取的方法来测试FileReader的进度条。
4.预览文本文件
这里主要用到FileReader的readAsText,对于诸如mimetype为text/plain、text/html等文件均认为是文本文件,即minetype为text开头都能在本例中预览。
由于需要在页面上预览文本,如果使用innerHTML插入文本的话,则需要对html中一些特殊字符进行实体编码,这样才能保证正常显示文本。
encodeHTML方法:
5、分段读取文件内容(slice)
有的时候,一次性将一个大文件读入内存,并不是一个很好的选择(如果文件太大,使用FileReader读取文件内容,可能直接导致浏览器崩溃),w3c也想到了这种情况,所以html5允许对文件进行分段读取。
chrome以及firefox已经将File slice api调整为如下:
var blob;
if(file.webkitSlice) { //Blob中的方法
blob = file.webkitSlice(start, end + 1, 'text/plain;charset=UTF-8');
} else if(file.mozSlice) {
blob = file.mozSlice(start, end + 1, 'text/plain;charset=UTF-8');
}
本例使用了FileReader的onloadend事件来检测读取成功与否,如果用onloadend则必须检测一下FileReader readyState,因为read abort时也会触发onloadend事件,如果我们采用onload,则可以不用检测readyState。
阅读全文
0 0
- HTML5之FileReader读取文件
- HTML5 FileReader 读取txt文件
- HTML5文件读取FileReader及文件读取模块的封装
- HTML5 文件域+FileReader 分段读取文件并上传-WebSocket
- html5 javascript FileReader 读取文件并传回后台保存
- HTML5 FileReader分布读取文件以及其方法简介
- HTML5学习之fileReader
- Html5之FileReader用法
- Html5之FileReader接口
- FileReader读取文件内容!
- java filereader读取文件
- FileReader读取文件
- FileReader读取文件方法
- FileReader读取转化文件
- FileReader读取文件
- FileReader文件读取API
- FileReader 文件读取
- HTML5文件上传FileReader API
- MongoDB简易教程
- python 集合的操作
- 服务器性能测试 及吞吐量指标 日志
- 探究:java中的char的取值范围,为什么是-128到127?
- 几个算法知识--基数排序
- HTML5之FileReader读取文件
- C/S 与 B/S 的认识
- make error 'No space left on device'
- 学习笔记:设计冲刺
- HttpClient实现网络请求
- Java / Android 基于Http的多线程下载的实现
- JS-仿京东导航(JS版)
- 哈希表查找(Java)
- Multiple dex files define Lorg/xmlpull/v1/XmlPullParser