HTML5 文件API-input File

上传input

  • 多文件上传 设置属性 multiple
  • 限制上传文件的格式 属性 accept="image/jpeg" accept="text/html" image/*

FileList对象

  • 是用户上传或者拖拽到浏览器的 文件的集合
  • 可以通过 inputElement.files 来获取
  • 是一个类数组对象 由File对象组成

File对象

  • 属性 name
  • 属性 size
  • 属性 type
  • 属性 lastModified
  • 属性 lastModifiedDate

实例

<body>
    <h1>FileList和File</h1>
    <input type="file" multiple onchange="uploadFile(this)">        
    <div id="box"></div>
    <script>    
        function uploadFile(obj){       
        var str = "";
            [].forEach.call(obj.files, function(file){
            //用forEach()遍历类数组对象
                str += "文件名 :"+file.name+"<br>";
                str += "文件大小 :"+file.size+"<br>";
                str += "文件类型 :"+file.type+"<br>";
                str += "最后修改时间 :"+file.lastModifiedDate+"<br>";
                str += "<hr>";
            });
            document.getElementById("box").innerHTML = str;
        }
    </script>

FileReader

属性
  • result 读取结果
  • error 错误内容
  • readyState 读取状态
方法 (没有返回值)
  • readAsText() 把文件读取为文本
  • readyAsDataURL() 读取为base64图片编码
  • readyAsArrayBuffer() 读取为Buffer 数据类型
  • readyAsBinaryString() 读取为二进制字符串
  • abort() 终止读取操作
事件
  • onerror 读取错误时触发
  • onabort 读取中断时触发
  • onloadstart 读取开始时触发
  • onload 读取成功时触发
  • onloadend 读取结束时 不论成功或失败
  • onprogress 读取过程中多次触发

实例

<h1>FileReader</h1>
    <hr>
    <input type="file" onchange="uploadFile(this)">
    <div id="box"></div>
    <script>
        function uploadFile(obj){
            //获取file对象
            var file = obj.files[0];            
            //创建FileReader对象
            var fr = new FileReader();
            //判断文件的类型
            if (file.type.match(/^text\//) !== null) {
                //读取文本文件
                readText(fr, file);
            } else if (file.type.match(/^image\//) !== null) {
                //读取图片
                readImage(fr, file);
            } else {
                alert("你上传的文件格式无法读取");
            }
        }
        /**
         * 读取图片
         * @param FileReader  frObj 
         * @param File  fileObj 
        */
        function readImage(frObj, fileObj) {
            frObj.onload = function(){
                var img = document.createElement("img");
                img.src = frObj.result;
                document.querySelector("#box").appendChild(img);
            }
            frObj.readAsDataURL(fileObj);
        }
        /**
         * 读取文本
         * @param FileReader  frObj 
         * @param File  fileObj 
        */
        function readText(frObj, fileObj) {
            frObj.onload = function(){
                var pre = document.createElement("pre");
                pre.innerHTML = frObj.result;
                document.querySelector("#box").appendChild(pre);
            };
            frObj.readAsText(fileObj);
        }
    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,360评论 1 41
  • 文件API 文件上传 多文件上传 :设置属性multiple 过滤上传文件类型:设置accept属性,accept...
    细雨衔雪阅读 654评论 0 0
  • 茉今天终于忍不住发火了。 安跟茉是同学,也是同一所学校的在职老师,茉几年前从县城调到这所学校,安是去年从一个比这所...
    木棉宝贝阅读 318评论 0 0