接口字段html文件,HTML5 FileReader API 测试(一)

参考文章

html5之FileReader接口

1、FileReader接口的作用:

用来把文件读入内存,并且读取文件中的数据。

2、支持情况

FF3.6+| Chrome6+

Js代码

276a3b17019081ce24d65dc582df0c93.png

/*检测方式*/

if(typeof FileReader == 'undefined'){

//不支持

}else{

//支持

}

3、FileReader接口的方法

readAsBinaryString(file)               ------ 将文件读取二进制码

通常我们将它传送到后端,后端可以通过这段字符串存储文件

readAsText(file,[encoding])          ------ 将文件读取文本

第二个参数是

文本的编码方式,默认UTF-8

readAsDataURL(file)                     ------ 将文件读取为DataURL

将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。

小文件指图像与html等格式的文件

abort()                                         -------中断读取操作

4、FileReader接口的事件

onabort             ---------数据读取中断时触发

onerror              ---------数据读取出错时触发

onloadstart        --------数据读取开始时触发

onprocess          --------数据读取中

onload               --------数据读取成功完成时触发

onloadend         --------数据读取完成时触发,无论成功失败

HTML5文件

HTML5 Filesystem API Demo

HTML5文件API示例

请选择文件(可多选):

显示文件信息

测试 readAsText

测试 readAsBinaryString

测试 readAsDataURL

ID文件名文件类型文件大小(KB)最后修改日期

合计:00清除信息

fileReader.js文件如下

//typeof File

if(typeof FileReader == "undefined") {

alert("您的浏览器未实现FileReader接口!");

}

//给jQuery提供访问FileList对象的功能

jQuery.fn.files = function() {

return this[0].files;

};

//“显示文件信息”按钮的click事件代码

$(function() {

$("#showInfoBtn").click(function(event) {

$("#clearBtn").click();

var fileObjs = $("#selectFiles").files();

var sum = 0, count = 1;

var tbody = $("

");

for ( var index = 0; index < fileObjs.length; index++) {

$("

").append($("").append("").val(count).text(count))

.append($("

").text(fileObjs[index].name))

.append($("

").text(fileObjs[index].type))

.append($("

").append($("").val(fileObjs[index].size).text(fileObjs[index].size / 1024)))

.append($("

").text(fileObjs[index].lastModifiedDate)).appendTo(tbody);

sum += fileObjs[index].size;

count++;

}

$("td>meter, #sum").attr("max", 5 * 1024 * 1024);

$("#info>thead").after(tbody);

$("#count").attr("max", "10").val(fileObjs.length).text(fileObjs.length);

$("#sum").val(sum).text(sum / 1024);

});

});

$(function() {

$("#clearBtn").click(function(event) {

$("#info>tbody, #fileContent, #console").empty();

$("#count, #sum").val(0).text(0);

});

});

//三个按钮的click事件代码

$(function() {

$("#txtBtn").click(function(event) {

$("#selectFiles").readAsText(handler);

//$("#selectFiles").readAsText($("#selectFiles").files(),"UTF-8");

});

$("#binBtn").click(function(event) {

$("#selectFiles").readAsBinaryString(handler);

});

$("#urlBtn").click(function(event) {

$("#selectFiles").readAsDataURL(handler);

});

});

//传入的事件处理器函数代码

var createTag = function(txt) {

$("#console").append($("").text(txt).after("
"));

};

var handler = {

load : function(event) {

createTag("this is FileReader's onload event.");

$("

").append(event.target.result).appendTo("#fileContent");

},

loadStart : function(event) {

createTag("this is FileReader's onloadstart event.");

},

loadEnd : function(event) {

createTag("this is FileReader's onloadend event.");

},

abort : function(event) {

createTag("this is FileReader's onabort event.");

},

error : function(event) {

createTag("this is FileReader's onerror event.");

},

progress : function(event) {

createTag("this is FileReader's onprogress event.");

}

};

var getFileReader = function(handler) {

var reader = new FileReader();

//var reader = FileReader(handler);

reader.onloadstart = handler.loadStart;

reader.onprogress = handler.progress;

reader.onload = handler.load;

reader.onloadend = handler.loadEnd;

reader.onabort = handler.abort;

reader.onerror = handler.error;

return reader;

};

jQuery.fn.readAsText = function(handler, encoding) {

if (typeof encoding == "undefined") {

encoding = "UTF-8";

}

var files = this.files();

var reader = null;

for ( var i = 0; i < files.length; i++) {

//alert(files[i].name);

reader = getFileReader(files[i]);

if (!/text\/\w+/.test(files[i].type)) {

reader.οnlοad=createTag("Loading ..." + files[i].name);

reader.loadEnd=createTag("Loading have End!" + files[i].name);

} else {

reader.οnlοad=createTag("Loading ..." + files[i].name);

reader.readAsText(files[i], encoding);

alert(reader.result);

$("#fileContent").append($("" + files[i].name + "
" + reader.result +"
"));

reader.loadEnd=createTag("Loading have End!" + files[i].name);

}

}

return this;

};

jQuery.fn.addText= function(txt) {

var createTag = function(txt) {

$("#console").append($("").text(txt).after("
"));

}

};

jQuery.fn.readAsBinaryString = function(handler) {

var files = this.files();

var reader = null;

for ( var i = 0; i < files.length; i++) {

reader = getFileReader(handler);

reader.readAsBinaryString(files[i]);

}

return this;

};

jQuery.fn.readAsDataURL = function(handler) {

var files = this.files();

var reader = null;

var imageHandler = function(event) {

$("").attr("src", event.target.result).appendTo("#fileContent");

};

for ( var i = 0; i < files.length; i++) {

reader = getFileReader(handler);

if (!/image\/\w+/.test(files[i].type)) {

reader.readAsDataURL(files[i]);

} else {

reader.onload = imageHandler;

reader.readAsDataURL(files[i]);

}

}

return this;

};

在不同的浏览器测试效果不同,特别是 测试readAsText

火狐12.0测试效果最佳

fcc9ec99a89539f19cb261865c31df5a.gif

Opera 12.00 beta 测试截图

e21ec164278b778aeed2fb2cb5134b8b.gif

Chrome 19测试截图

f47dde53d5a1282b562247c16150b826.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值