多个html预览,前端开发 多个文件同时在页面中预览

/p>

<

多选文件,同时展现预览

/**

* 多选文件,同时展现预览

*/

(function () {

var fileNode = document.getElementById(‘fileBox’),

output = document.getElementById(‘output’),

type = ‘default’,

callback = null,

events = null,

reader = new FileReader();

/**

* 暴露了两个接口,events和callback

* 当多选文件时,用于判断是否执行回调callback。

* 暴露events是为了获取length值,知道到底选中了多少个文件

* 暴露callback是为了,判断为多个文件时可以执行

*

* @param event

*/

function handleEvent(event) {

var files = event.target.files,

i = 0;

events = event;

callback = (function (i) {

return function (len) {

console.log(i);

//执行的次数等于总的读取文件次数,则返回

if (i == len) { return; }

if (/image/.test(files[i].type)) {

reader.readAsDataURL(files[i]);

type = “image”;

} else {

reader.readAsText(files[i], “UTF-8”);

type = “text”;

}

i++;

}

})(i);

callback();

}

//监听“change”事件

fileNode.addEventListener(‘change’, handleEvent, false);

//监听读取文件事件“error”,“progress”,“load”

reader.addEventListener(‘error’, function () {

console.log(“error”);

output.innerHTML = “Could not read file, error code is” + reader.error.code;

});

reader.addEventListener(‘progress’, function (event) {

console.log(“progress”);

if (event.lengthComputable) {

output.innerHTML = event.loaded + “/” + event.total;

}

});

reader.addEventListener(‘load’, function () {

console.log(“load”);

var len = events.target.files.length;

switch (type) {

case “image”:

break;

case “text”:

html += “

” + reader.result + “

”;

break;

}

output.innerHTML = html;

if (len > 1) {//大于1说明,当选中多个文件时,执行回调函数callback

//这里给callback传入len是为了用于判断当执行次数等于len时(说明已经读取了所有选中的文件了),终止执行,因为文件数是从0算起的。

callback(len);

}

})

})();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值