HTML5 FileReaderのは、ファイルとその配布方法を紹介して読み込みます

レンダリング

最初のレンダリングの古いルール
ここで説明する絵を書きます

まずFileReaderのH5やイベントでのいくつかの方法を教えて

FileReaderの方法

名前 効果
約() 終了を読みます
readAsBinaryString(ファイル) ファイルがバイナリエンコーディングとして読まれます
readAsDataURL(ファイル) DataURLコーディングとして読み取った原稿
readAsText(ファイル、[符号化]) テキストファイルを読み込みます
readAsArrayBuffer(ファイル) arraybufferとして読み取られた原稿

FileReaderのイベント

名前 効果
onloadstart トリガーは、読書を開始するとき
onprogress 積載
onloadend 完了トリガを読んで、関係なく、成功または失敗の
onloadイベント ファイルが読み込まれると、正常トリガーを完了
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;

支持スライス方法、読み出しステップは、最初の読み取りがサポートされていない場合、//は、IF(file.slice){ BLOB = file.slice(スタート、+スタートこの ;。ステップを) } { BLOB =ファイル; }






この .reader.readAsText(BLOB);
} //中止読み取る ABORT:関数

{ VARのリーダー= この .reader。


もし(リーダ){
reader.abort()。
}
}
}

おすすめ

転載: www.cnblogs.com/sanxiandoupi/p/11710803.html