html5 filereader读取文件,H5的FileReader分布读取文件应该如何使用以及其方法简介...

这次给大家带来H5的FileReader分布读取文件应该如何使用以及其方法简介,H5的FileReader分布读取文件的使用以及其方法简介的注意事项有哪些,下面就是实战案例,一起来看一下。

先介绍一下H5中FileReader的一些方法以及事件

FileReader方法

名称 作用

about() 终止读取

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

readAsDataURL(file) 将文件读取为DataURL编码

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

readAsArrayBuffer(file) 将文件读取为arraybuffer

FileReader事件

名称

作用

onloadstart 读取开始时触发

onprogress 读取中

onloadend 读取完成触发,无论成功或失败

onload 文件读取成功完成时触发

onabort 中断时触发

onerror 出错时触发

代码

分布读取文件核心思想, 将文件分块以每M进行读取.

HTML部分

Document

分步读取文件:

读取进度:

var progress = document.getElementById('Progress');//进度条

var events = {

load: function () {

console.log('loaded');

},

progress: function (percent) {

console.log(percent);

progress.value = percent;

},

success: function () {

console.log('success');

}

};

var loader;

// 选择好要上传的文件后触发onchange事件

document.getElementById('File').onchange = function (e) {

var file = this.files[0];

console.log(file)

//loadFile.js

loader = new FileLoader(file, events);

};

document.getElementById('Abort').onclick = function () {

loader.abort();

}

loadFile.js部分/*

* 文件读取模块

* file 文件对象

* events 事件回掉对象 包含 success , load, progress

*/

var FileLoader = function (file, events) {

this.reader = new FileReader();

this.file = file;

this.loaded = 0;

this.total = file.size;

//每次读取1M

this.step = 1024 * 1024;

this.events = events || {};

//读取第一块

this.readBlob(0);

this.bindEvent();

}

FileLoader.prototype = {

bindEvent: function (events) {

var _this = this,

reader = this.reader;

reader.onload = function (e) {

_this.onLoad();

};

reader.onprogress = function (e) {

_this.onProgress(e.loaded);

};

// start 、abort、error 回调暂时不加

},

// progress 事件回掉

onProgress: function (loaded) {

var percent,

handler = this.events.progress;//进度条

this.loaded += loaded;

percent = (this.loaded / this.total) * 100;

handler && handler(percent);

},

// 读取结束(每一次执行read结束时调用,并非整体)

onLoad: function () {

var handler = this.events.load;

// 应该在这里发送读取的数据

handler && handler(this.reader.result);

// 如果未读取完毕继续读取

if (this.loaded < this.total) {

this.readBlob(this.loaded);

} else {

// 读取完毕

this.loaded = this.total;

// 如果有success回掉则执行

this.events.success && this.events.success();

}

},

// 读取文件内容

readBlob: function (start) {

var blob,

file = this.file;

// 如果支持 slice 方法,那么分步读取,不支持的话一次读取

if (file.slice) {

blob = file.slice(start, start + this.step);

} else {

blob = file;

}

this.reader.readAsText(blob);

},

// 中止读取

abort: function () {

var reader = this.reader;

if(reader) {

reader.abort();

}

}

}

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 查询某一主键在那些表中中被设置为外键了

use information_schema; show tables; select * from KEY_COLUMN_USAGE where COLUMN_NAMEareaid; 转载于:https://www.cnblogs.com/liaojie970/p/4799750.html

室内空气流动原理图_新风系统原理图—新风系统原理介绍

如今我们在进行新家的装修的时候&#xff0c;不少人为了家人的健康着想&#xff0c;都在选购家电的同时会选择安装一款新风系统。但是尽管如此&#xff0c;大家对新风系统原理其实并不了解&#xff0c;更不要提新风系统各部分的原理了&#xff0c;下面小编就结合新风系统原理图…

计算机网络线路争用,计算机网络系统集成复习要点

计算机网络系统集成复习要点计算机网络系统集成复习要点1.在信息领域&#xff0c;对于系统集成一般分为软件集成、硬件集成和网络系统集成。2.按网络覆盖范围的大小&#xff0c;将计算机网络分为局域网(LAN)、城域网(MAN)、广域网(WAN)和互联网。3. 计算机网络拓扑结构是指一个…

mrsql查询第二高的成绩_mysql-查找用户的最高分数和相关的详细信息

我有一个表,用户可以在其中存储分数和有关该分数的其他信息(例如,分数注释或花费的时间等).我想要一个mysql查询,该查询可找到每个用户的个人最佳成绩及其相关的注释和时间等我尝试使用的是这样的&#xff1a;SELECT *,MAX(score)FROM table GROUP BY(用户)这样做的问题是,虽然…

centos 7 防火墙和端口配置

开启redis端口&#xff0c;修改防火墙配置文件 vi /etc/sysconfig/iptables 加入端口配置 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379:7000 -j AC…

计算机网络实验11.6.1,6.111 2004春季课程:数位系统概论实验(Introductory Digital Systems Laboratory, Spring 2004)...

摘要&#xff1a;Lectures and labs on digital logic, flipflops, PALs, counters, timing, synchronization, finite-state machines, and microprogrammed systems prepare students for the design and implementation of a final project of their choice: games, music, …

v380pro设备连接失败_天猫精灵可以连接台式电脑使用吗?需要什么东西? 安装操作是哪几个步骤? 最好有图片解说!...

使用语音将天猫精灵调到【蓝牙配对】&#xff1b;打开电脑的蓝牙适配界面&#xff0c;让电脑找到天猫精灵&#xff0c;稍等片刻&#xff0c;点击【使用远程装置的扬声器聆听来自此PC的音频】后的连接&#xff1b;最后调整音量即可。以下是详细介绍&#xff1a;1、对天猫精灵说【…

SWOT分析是神马?

SWOT分析是思维的工具来理解事物的方式。人生在世&#xff0c;作为一个独立的实体&#xff0c;不可避免地需要思考的问题。除非你是猪。猪比这更聪明。眠质量&#xff0c;都要完爆白领&#xff0c;蓝领和金领们。SWOT分析分为四个象限。我们用一头名猪——麦兜来打个例如就清楚…

hive 日誌怎麼查看_Hive各个日志里都存放了什么信息?

审计日志首先&#xff0c;对于审计日志来说&#xff0c;记录了某个时间点某个用户从哪个IP发起对HiveServer或者MetaStore的请求以及记录执行的语句是什么。如下的HiveServer审计日志&#xff0c;表示在2016-02-01 14:51:22 用户user_chen向HiveServer发起了show tables请求&am…

语音媒体和信令的测试软件,IP多媒体子系统信令分析工具的设计与实现

摘要&#xff1a;IP多媒体子系统(InternetProtocolMultimediaSubsystem,IMS)为基于IP的移动和固定通信融合提供了基础,并被业界认为是网络演进的一个重要阶段.与此同时,信令分析工具一直被电信运营商,设备供应商,测试仪器厂商广泛而深入的关注.一款优秀的信令分析工具,可以使设…

大小写转换

1 ;小写字母的ASCII码比大写字母的ASCII码的值大20H。2 ;比如大写字母A的ASCII值为01000001 小写字母a的ASCII码为&#xff1a;011000013 ;公式为 a(01100001) - 20H(100000) A(01000001)4 ;A(01000001) 20H(100000) a(01100001)5 assume cs:codesg,ds:datasg6 7 datasg seg…

四象限法推导lm曲线_试用几何方法推导IS曲线(四象限法)

【简答题】请根据自己的实际情况,撰写一份适合自己的“征婚启事”。内容积极健康。文体,字数等不限【填空题】由一棵二叉树的前序序列和 序列可唯一确定这棵二叉树。 (1.0分)【判断题】完全二叉树一定是满二查树。 (1.0分)【判断题】二叉树的前序遍历中,任意一个结点均处于其子…

IDE-Ecplise-代码注释 模版 编码规范 配色

说明&#xff1a; 代码注释主要用于方便代码后期维护&#xff0c;编码规范&#xff0c;增加代码阅读性和维护性。因网上看到的很多博客中片段局多&#xff0c;故整理后重写一篇&#xff0c;方便交流学习。 先看下加过注释模版后的效果。如上图所示&#xff0c;创建类&#xff0…

通过路由远程计算机重启,华为无线路由器三种常用重启的方法

日常重启无线路由器并不是一个高难度动作&#xff0c;但是你了解华为(HUAWEI)家用无线路由器的三种常用的重启的方法吗&#xff1f;这三种方法也适用于绝大多数品牌的路由器&#xff0c;只不过在某个细节上略有区别。华为路由器的三种常用重启方法分别是&#xff1a;硬重启、软…

个人信息管理系统代码_学生信息管理系统(springboot + vue)

学生信息管理系统零、基础项目为前后分离项目1、前端(front-end)基于 vue-admin-template 开发2、后端(rear-end)Jdk8Maven3MySQL5.7SpringBoot2SQLYog一、功能模块图图片.png二、系统预览1、登录登录.png2、首页首页.png3、查看学生信息查看学生信息.png4、编辑学生信息编辑学…

苹果手机6s运营商在哪里显示无服务器,iPhone6s信号很弱或无服务如何解决【解决方法】...

很多果粉都遇到过自己的手机常常“无服务”或者信号很弱的情况。 iphone6s 信号很弱或无服务怎么办&#xff1f;iPhone手机信号不好的原因有很多&#xff0c;排除SIM卡&#xff0c;手机本身硬件故障等问题&#xff0c;你可以尝试以下方法“修复”你的手机信号问题。1、开关飞行…

iOS开发网络资源整理-持续更新

本文记录iOS开发相关的网络社区和博客 1.objc中国 网址&#xff1a;http://objccn.io简介&#xff1a;onevcat创建,项目的成立源于国内 Objective-C 社区对 objc.io 的翻译活动。2.cocoachina 网址&#xff1a;http://www.cocoachina.com简介&#xff1a;CocoaChina创立于2008年…

72年属鼠48岁有一灾2020_李半仙推算:1972年虚岁48岁属鼠人,2020年干什么最能发财??...

李半仙推算:1972年虚岁48岁属鼠人&#xff0c;2020年干什么最能发财&#xff1f;&#xff1f;生肖属鼠的朋友&#xff0c;在未来&#xff0c;喜事接二连三&#xff0c;属鼠人能够得到财神赐福&#xff0c;一路大发特发&#xff0c;很快就会有发财致富的商机&#xff0c;加上属鼠…

sun服务器操作系统使用,SUN ILOM使用指南

SUN ILOM使用指南Sun ILOM使用指南/by pupil2008.09.16Sun Integrated Lights Out Manager简称ILOM,是一种服务处理器(SP,service processor),可以通过它远程管理和控制Sun服务器.ILOM的运行不依赖于SunOS,也不依赖于OBP固件.一旦接通电源,ILOM就 开始运行,而不管POST,SunOS是否…

vue怎么插入接口demo_前端学起来特别吃力,新人入前端怎么学?

最近知乎收到一些问题&#xff0c;问前端学起来吃力&#xff0c;连续更新几次回答的比较全了。现在整理下分享给掘金的小伙伴们。原知乎问题:前言前端工作两年多。大部分前端原理、框架都能完全运用。工作中几乎遇不到解决不了的问题&#xff08;除了那些恶心无法实现的需求&am…