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


当前第2页 返回上一页

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;

  

        // 如果支持 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中文网其它相关文章!

相关阅读:

超链接的宽高怎样设置

在html中怎样可以做到下拉菜单提交后保留选中值不返回默认值

如何用html的title属性实现鼠标悬停显示文字

以上就是H5的FileReader分布读取文件应该如何使用以及其方法简介的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

canvas原生实现前端网页移动端签名

详解html5幻灯片系统--h5slides

解决html5对手机页面长按会粘贴复制禁用的方法

html5中的常见错误用法

表单中的只读和禁用应该如何使用

html5的video标签操作视频详解

html5 浏览器支持

html5标准学习-编码详解

html5实现的在线视频播放

html5边玩边学(十)-俄罗斯方块之控制界面篇(源码)

更多相关阅读请进入《FileReader》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...