HTML5 FileReader читает файл и введение в его метод распределения

Renderings

Старые правила на первых визуализаций
Написать фотографии, описанные здесь

Сначала расскажите о некоторых из способов в FileReader H5 и события

метод FileReader

имя эффект
около() Читать терминации
readAsBinaryString (файл) Файл считывается в виде двоичного кодирования
readAsDataURL (файл) Документ гласил кодирования DataURL
readAsText (файл, [кодировка]) Будет ли читать текстовый файл
readAsArrayBuffer (файл) Документ гласил ArrayBuffer

события FileReader

имя эффект
onloadstart Когда триггер, чтобы начать читать
в процессе загрузка
onloadend Читать триггер завершения, независимо от успеха или неудач
в процессе Когда файл читается успешно завершен триггер
Onboart Когда прерывание срабатывает
OnError триггер ошибки

код

Основная идея распределения файла, чтобы прочитать файл для чтения на блок M.

HTML часть

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

<html lang="en">

<head>
<meta charset="UTF-8">
<title>Document</title>
</head>

<body>
<form>
<fieldset>
<legend>分步读取文件:</legend>
<input type="file" id="File">
<input type="button" value="中断" id="Abort">
<p>
<lable>读取进度:</lable>
<progress id="Progress" value="0" max="100"></progress>
</p>
</fieldset>
</form>
<script src="./loadFile.js"></script>
<script>

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);
};
大专栏  HTML5 FileReader分布读取文件以及其方法简介r/> document.getElementById('Abort').onclick = function () {
loader.abort();
}
</script>
</body>
</html>

loadFile.js部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
* 文件读取模块
* 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;

// Если метод поддержки ломтик, шаг чтение, первое чтение не поддерживается, то ПЧ (file.slice) { BLOB = file.slice (Пуск + Start в этот .step); } в другое { BLOB = File; }






это .reader.readAsText (BLOB);
} // считывает прерывания ABORT: функция (

) { Вар читатель = это .reader;


если (считыватель) {
reader.abort ();
}
}
}

рекомендация

отwww.cnblogs.com/sanxiandoupi/p/11710803.html
рекомендация