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部分

    <input type="file" id="input_file"/>
    <div id="result" style="width: 100px;height: 100px;border: 1px solid #E1E1E1;"></div>
    <div id="box" style="width: 400px;height: 100px;border: 1px solid #E1E1E1;"></div>

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用法,内容不多理解较为容易,不再赘述。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,175评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,797评论 19 139
  • H5 meta详解 viewport width:控制 viewport 的大小,可以指定的一个值,如果 600,...
    FConfidence阅读 4,253评论 0 3
  • 还是不跟你走了吧 人生的忐忑已经够多了 你的情书和车马太慢了 不眠就算了 我想睡个好觉 四月的清晨还是有点冷 雪糕...
    夏诗琪阅读 3,064评论 0 0
  • 妞妞: 前天我们去给弟弟拍照,看着你们俩拍照间隙在地毯上愉快的玩耍,我在朋友圈里发了一条——这一年,你14岁,他3...
    若水女子2017阅读 4,174评论 9 8