zoukankan      html  css  js  c++  java
  • filereader api 类型

    filereader类似XMLHttpRequest,只是它用来从文件系统读取文件,提供了不同的方法去读取文件数据:
    1、readAsText
    2、readAsDataURL
    3、readAsBinaryString
    4、readAsArrayBuffer

     

    读取的过程是异步的,有一些事件可以监听,progress,error,load等

     

    progress事件没50毫秒触发一次,也有lengthComputable,loaded,total属性,可以在result里查看到目前读取了多少数据。

     

    举例:
    var filesList = document.getElementById(“files-list”);
    EventUtil.addHandler(filesList, “change”, function(event){
    var info = “”,
    output = document.getElementById(“output”),
    progress = document.getElementById(“progress”),
    files = EventUtil.getTarget(event).files,
    type = “default”,
    reader = new FileReader();
    if (/image/.test(files[0].type)){
    reader.readAsDataURL(files[0]);
    type = “image”;
    } else {
    reader.readAsText(files[0]);
    type = “text”;
    }
    reader.onerror = function(){
    output.innerHTML = “Could not read file, error code is “ +
    reader.error.code;
    };
    reader.onprogress = function(event){
    if (event.lengthComputable){
    progress.innerHTML = event.loaded + “/” + event.total;
    }
    };
    reader.onload = function(){
    var html = “”;
    switch(type){
    case “image”:
    html = “<img src=”” + reader.result + “”>”;
    break;
    case “text”:
    html = reader.result;
    break;
    }
    output.innerHTML = html;
    };
    });

     

    读取过程中也是可以用abort来中断。最后不管是load,error,abort,都会触发loadend事件,意味着操作结束

     
     

    如果需要读取部分内容的话,可以使用Blob上的slice方法。slice方法返回一个 Blob的实例。Blob类型实际上是file类型的super type。

     

    function blobSlice(blob, startByte, length){
    if (blob.slice){
    return blob.slice(startByte, length);
    } else if (blob.webkitSlice){
    return blob.webkitSlice(startByte, length);
    } else if (blob.mozSlice){
    return blob.mozSlice(startByte, length);
    } else {
    return null;
    }
    }

     

    读取文件前32位数据:
    var filesList = document.getElementById(“files-list”);
    EventUtil.addHandler(filesList, “change”, function(event){
    var info = “”,
    output = document.getElementById(“output”),
    progress = document.getElementById(“progress”),
    files = EventUtil.getTarget(event).files,
    reader = new FileReader(),
    blob = blobSlice(fi les[0], 0, 32);
    if (blob){
    reader.readAsText(blob);
    reader.onerror = function(){
    output.innerHTML = “Could not read file, error code is “ +
    reader.error.code;
    };
    reader.onload = function(){
    output.innerHTML = reader.result;
    };
    } else {
    alert(“Your browser doesn’t support slice().”);
    }
    })

  • 相关阅读:
    SSHkey的申请
    版本控制系统-集中式VS分布式(分享)
    01-OC中数组NSArray的遍历
    第4周小组作业:WordCount优化
    第2周作业1:开设博客
    第2周个人作业:WordCount
    测试课程总结2017
    优秀博客的评比结果及相关说明
    静态代码检查工具简介
    Selenium安装中的一些问题及解决办法-软硕1703班3组整理分享
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5166393.html
Copyright © 2011-2022 走看看