一、分段读取txt文本

HTML:

<div class="container">
<div class="panel panel-default">
<div class="panel-heading">分段读取文件:</div>
<div class="panel-body">
<input type="file" id="file" />
<blockquote style="word-break:break-all;"></blockquote>
</div>
</div>
</div>

JS:

    var fileBox = document.getElementById('file');
file.onchange = function () {
//获取文件对象
var file = this.files[0];
var reader = new FileReader();
//var step = 10 * 3 * 8; //固定长度截取 文件内容时注意,在切分点会有乱码出现的可能
var step = 1024 * 512; //如果文件太大,截取内容小会出现假死现象,因为js执行是同步的
var total = file.size;
var cuLoaded = 0;
console.info("文件大小:" + file.size);
//读取一段成功
reader.onload = function (e) {
//处理读取的结果
showResult(reader.result);
cuLoaded += e.loaded;
//如果没有读完,继续
if (cuLoaded < total) {
readBlob(cuLoaded);
} else {
cuLoaded = total;
}
}
//处理显示读取结果
$('blockquote').empty();
function showResult(result) {
//在读取结果处理中,如果没有Dom显示操作,速度还是非常快的
//如果有Dom显示操作在IE下,很容易使浏览器崩溃
//$('blockquote').append('<br />');
//$('blockquote').append(result);
console.info(result);
}
//开始读取
readBlob(0);
//指定开始位置,分块读取文件
function readBlob(start) {
//指定开始位置和结束位置读取文件
var blob = file.slice(start, start + step);
reader.readAsText(blob, 'gbk');
}
}

二.分段读取文件为二进制数组ArrayBuffer

HTML:

<div class="container">
<div class="panel panel-default">
<div class="panel-heading">分段读取文件:</div>
<div class="panel-body">
<input type="file" id="file" />
<blockquote style="word-break:break-all;"></blockquote>
</div>
</div>
</div>

JS:

var reader2 = new FileReader();
var fileBox = document.getElementById('file');
file.onchange = function () {
//获取文件对象
var file = this.files[0];
var reader = new FileReader();
var step = 1024* 1024;
var total = file.size;
var cuLoaded = 0;
console.info("文件大小:" + file.size);
//读取一段成功
reader.onload = function (e) {
//处理读取的结果
showResult(reader.result);
cuLoaded += e.loaded;
//如果没有读完,继续
if (cuLoaded < total) {
readBlob(cuLoaded);
} else {
cuLoaded = total;
}
}
//处理显示读取结果
$('blockquote').empty();
function showResult(result) {
console.info(result);
var buf = new Uint8Array(result);
$('blockquote').append('<br/>');
$('blockquote').append(buf.toString());
}
//开始读取
readBlob(0);
//指定开始位置,分块读取文件
function readBlob(start) {
//指定开始位置和结束位置读取文件
var blob = file.slice(start, start + step);
reader.readAsArrayBuffer(blob);
}
}

三、读取分段结果的二次处理

var reader2 = new FileReader();
var fileBox = document.getElementById('file');
file.onchange = function () {
//获取文件对象
var file = this.files[0];
var reader = new FileReader();
var step = 10*2*8;
var total = file.size;
var cuLoaded = 0;
//读取一段成功
reader.onload = function (e) {
//处理读取的结果
showResult(reader.result);
cuLoaded += e.loaded;
//如果没有读完,继续
if (cuLoaded < total) {
console.info('cuLoaded:' + cuLoaded);
readBlob(cuLoaded);
} else {
cuLoaded = total;
}
}
//处理显示读取结果
$('blockquote').empty();
function showResult(result) {
//解决方案 先读取 blob 然后在转换成 字符串
//特别说明,如果使用Uint8Array 则每次读取数量应该是 8的倍数
var buf = new Uint8Array(result);
var blob = new Blob([buf]);
reader2.readAsText(blob, 'gbk');
reader2.onload = function (e) {
$('blockquote').append('<br/>');
$('blockquote').append(reader2.result);
}
}
//开始读取
readBlob(0);
//指定开始位置,分块读取文件
function readBlob(start) {
//指定开始位置和结束位置读取文件
var blob = file.slice(start, start+step);
reader.readAsArrayBuffer(blob);
}
}

读取文件三:http://www.cnblogs.com/tianma3798/p/5839810.html

读取文件二:http://www.cnblogs.com/tianma3798/p/5839791.html

读取文件一:http://www.cnblogs.com/tianma3798/p/4355949.html

HTML5 文件域+FileReader 分段读取文件(四)的更多相关文章

  1. HTML5 文件域+FileReader 分段读取文件并上传(八)-WebSocket

    一.同时上传多个文件处理 HTML: <div class="container"> <div class="panel panel-default&q ...

  2. HTML5 文件域+FileReader 分段读取文件并上传(七)-WebSocket

    一.单文件上传实例 HTML: <div class="container"> <div class="panel panel-default" ...

  3. HTML5 文件域+FileReader 分段读取文件并上传到服务器(六)

    说明:使用Ajax方式上传,文件不能过大,最好小于三四百兆,因为过多的连续Ajax请求会使后台崩溃,获取InputStream中数据会为空,尤其在Google浏览器测试过程中. 1.简单分段读取文件为 ...

  4. HTML5 文件域+FileReader 分段读取文件(五)

    一.默认FileReader会分段读取File对象,这是分段大小不一定,并且一般会很大 HTML: <div class="container"> <!--文本文 ...

  5. html5中利用FileReader来读取文件。

    利用FileReader来读取文件的能够来实现即时预览的效果,这个也是在html5中才有的功能. <!DOCTYPE html> <html lang="en"& ...

  6. HTML5 文件域+FileReader 读取文件(一)

    在HTML5以前,HTML的文件上传域的功能具有很大的局限性,这种局限性主要体现在如下两点: 每次只能选择一个文件进行上传 客户端代码只能获取被上传文件的文件路径,无法访问实际的文件内容 一.File ...

  7. HTML5之fileReader异步读取文件及文件切片读取

    fileReader的方法与事件 fileReade实现图片预加载 fileReade实现文件读取进度条 fileReade的与file.s实现文件切片读取 一.fileReader的方法与事件 1. ...

  8. Java利用内存映射文件实现按行读取文件

    我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...

  9. .net上传文件,利用npoi读取文件信息到datatable里

    整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...

随机推荐

  1. 严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0

    嘿嘿,对于我这样的新手,这个工具还是很令人兴奋的. 真的是术业有专攻啊.关键还是免费开源 EXCEL,VISO,PPT,PS,CD,FREEHAND不是不可以,只是.人家还是专业点,方便点.. Ope ...

  2. R统计软件真有意思哈,以后我怕要用得着,先自学

    呵呵,作数据分析是数据监控后的动作. 思路是用监控系统产生数据, 如果监控本身提供统计最好,如果不提供,则可以用R来作分析统计和预测. 如果数据不符合规范,则用PYTHON进行处理转换. ~~~~~~ ...

  3. Ultraedit中使用Astyle格式化代码

    方法: 使用UE的自定义工具栏并借助开源工具astyle.exe来完成. 1. 首先下载最新的astyle,因为ue自带的astyle版本太老,不支持空格.中文名等. http://astyle.so ...

  4. 关于IOS开发者账号一点总结

    经过查阅相关资料,我扼要总结了以下几点内容. 一.开发者账号类型 个人账号 99美金/年 公司账号 99 企业账号 299 教育账号 0 二.开发者账号有无比较 如果有: 可以真机测试 发布的应用可以 ...

  5. read by other session

    模拟场景: 同时开多个SESSION执行select * from test2; read by other session: 当会话必须等待其他会话将统一数据块读入缓冲存储器时,作为read by ...

  6. 【转】怎么在Foxmail回复/转发时使用签名?

    原文网址:http://kf.qq.com/faq/120322fu63YV130422yABZRZ.html Foxmail回复/转发时使用签名,可通过在模版中设置签名.如下版本操作方法: 一.fo ...

  7. 【转】更新SDK后,打包APK时报 the zipalign tool was not found in the sdk

    原文网址:http://wyong.blog.51cto.com/1115465/1546632 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任 ...

  8. 转 @RenderBody()和@RenderSection()

    强大的Razor引擎 一.Razor基础简介 Razor采用了cshtml后缀的文件名,截图如下: A. 版面布局 从图上看到,新的视图引擎已经没有了Site.Master这种MasterPage了, ...

  9. Android问题:设置了requestWindowfeature(window.feature_no_title)后,为什么还要getwindow.setFlags?

    //设置窗体全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams. ...

  10. apache 服务发布多个项目,只需要更改配置文件(需要设定虚拟主机)

    http://www.php186.com/content/article/apache/24609.html http://blog.sina.com.cn/s/blog_6b689d5901013 ...