zoukankan      html  css  js  c++  java
  • HTML5学习之文件操作(九)

    之前我们操作本地文件都是使用flash、silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很进行跨平台的处理,另外就是让我们的web应用依赖了第三方的插件,而不是很独立,不够通用。在HTML5标准中,默认提供了操作文件的API让这一切直接标准化。
    在学习文件操作API之前,首先得认识几个比较重要的对象:
    •FileList对象:是File对象的一个集合,在Html4标准中文件上传控件只接受一个文件,而在新标准中,只需要设置multiple,就支持多文件上传,所以从此标签中获取的files属性就是FileList对象实例。见备注
    •Blob对象:指向文件的数据,其实就是一个数据块对象。有两个属性:size(数据的大小),type(MIME类型)
    •File对象:继承自Blob对象,指向一个具体的文件,它还有两个属性:name(文件名), lastModifiedDate(最后修改时间)
    FileReader对象:设计用来读取文件里面的数据,提供三个常用的读取文件数据的方法,另外读取文件数据使用了异步的方式,非常高效。
    三个重要方法:
    •void readAsBinaryString(Blob blob);//读取数据作为 二进制字符串
    •void readAsText(Blob blob, optional DOMString encoding);//文本
    •void readAsDataURL(Blob blob);//读取as url
    •void abort();//停止读取数据
    •数据读取完毕后,直接放到result属性中,并触发onload事件。所以一般在onload事件中处理当前的读取文件的结果。
    FileReader对象的事件:onload;onloadstart; onprogress;onabort; onerror;onloadend;
     
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <script type="text/javascript">
            function test() {
                var fl = document.getElementById("f").files;
                for (var i = 0; i < fl.length; i++) {
                    var file = fl[i];
                    var str = file.name + "--" + file.size + "--" + file.type;
                    document.getElementById("d1").innerHTML += str + "<br>";
                    var fr = new FileReader();
                    fr.onload = function() {
                        var img = document.createElement("img");
                        img.src = this.result;
                        document.getElementById("imgs").appendChild(img);
                    };
                    fr.readAsDataURL(file);
                }
            }
        </script>
    </head>
    <body>
        <input id="f" type="file" multiple="multiple" />
         <input type="button" onclick="test()" value="test" />
    
        <div id="d1"></div>
    
        <div id="imgs"></div>
    </body>
    </html>
     
  • 相关阅读:
    洛谷 P1903 【模板】分块/带修改莫队(数颜色)
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
    LibreOJ #6208. 树上询问
    LibreOJ #6002. 「网络流 24 题」最小路径覆盖
    hdu 3861 The King’s Problem
    洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows
    洛谷 P2905 [USACO08OPEN]农场危机Crisis on the Farm
    洛谷 U3348 A2-回文数
    洛谷 P1001 A+B Problem
    LibreOJ #2130. 「NOI2015」软件包管理器
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3896934.html
Copyright © 2011-2022 走看看