HTML5 fileReader用法

相关API

1.文件拖拽事件

  • ondragover -> 只要悬浮,一直触发
  • ondragenter -> 进入时触发,有子节点时有问题
  • ondragleave -> 离开时触发,有子节点时有问题
  • ondrop -> 释放鼠标时触发,对应DOM节点的dragover事件必须取消默认事件

2.File接口

  • var reader = new FileReader(); 新建文件读取对象
    调用对象方法
  • .readAsText(file) -> 读取文本文件
  • .readAsDataURL(file) -> 将文件读取为 DataURL(二进制流形式)
  • .readAsBinaryString -> 将文件读取为 二进制编码

3.处理事件

  • .onload -> 资源读取完毕 reader.result
  • .onprogress -> 读取进度更新时触发
  • .onloadstart -> 加载开始时触发
  • .onloadend -> 加载结束时触发
  • .onerror -> 出现错误时触发
  • .onabort -> 加载过程中中止时触发
  • .abort -> 手动中止加载

代码实现

HTML部分

    
    

Javascript

    var input=document.getElementById("input_file");
        var result=document.getElementById("result");
        if (window.FileReader) {
            input.addEventListener("change",imageUpload,false);
        } else{
            alert("浏览器不支持fileReader")
        }
      //普通上传图片
        function imageUpload () {
            var file = this.files[0];
            var reader = new FileReader();
            if(!/image\/\w+/.test(file.type)){
                alert("请确保文件为图像类型");
                return false;
            }
            reader.readAsDataURL(file);
            reader.onload = function(ev) {
                console.log(this.result);//二进制流
                result.innerHTML='![]('+this.result+')'
            }
        }

        //拖拽上传图片或处理文本或者多媒体(图片  音频 视频)
        var oBox=document.getElementById("box");
            oBox.ondrop=function  () {
                var file = this.files[0];
                var reader = new FileReader();
                if (/txt/.test(file.type)) {
                    reader.readAsText(file);
                    reader.onload = function(ev) {
                    console.log(this.result);
                       document.write(this.result) 
                    }
                } else{
                    reader.readAsDataURL(file);
                    if (/iamge/.test(file.type)) {
                        reader.onload = function(ev) {
                           console.log("image");
                           var oImg=new Image();
                           oImg.src=this.result;
                           document.body.appendChild(oImg);
                        }
                    }
                    if (/video/.test(file.type)) {
                        reader.onload = function(ev) {
                           console.log("video");
                           new Video(this.result).play();
                        }
                    }
                    if (/audio/.test(file.type)) {
                        reader.onload = function(ev) {
                           console.log("audio")
                           new Audio(this.result).play();
                        }
                    }
                }
            }

以上为HTML5 fileReader用法,内容不多理解较为容易,不再赘述。

你可能感兴趣的:(HTML5 fileReader用法)