zoukankan      html  css  js  c++  java
  • HTML5中File

    一 File对象与FileList对象

    当将input元素的type类型设置为file时,web页面上会显示一个选择文本按钮和一个文本显示框,单击文件按钮可以选择一个文件,文本显示框中会显示选中的文件名称。

    input元素设置multiple属性,可以选择多个文件,文本显示框中会显示选中了几个文件。

         

    在这个过程中,用户选中的每一个对象都是一个file对象,用户选中的对个对象的集合就是fileList对象。File对象有两个属性,name属性表示文件名,但不包含文件的路径;

     lastModifiedDate属性表示文件的最后修改的日期。

      multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径。    

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <script type="text/javascript">
     7 
     8         function show(){
     9             var file,filelist,mySpan;
    10             file=document.getElementById("file");
    11             filelist=file.files;
    12             mySpan=document.getElementById("mySpan");
    13             var names="";
    14             for(var i=0;i<filelist.length;i++){
    15                 names+=filelist[i].name+"<br />";
    16 
    17             }
    18             mySpan.innerHTML=names;
    19         }
    20     </script>
    21 </head>
    22 <body>
    23     <input type="file" id="file" multiple />
    24     <input type="button" onclick="show();" value="上传文件" /><br />
    25     <span id="mySpan">文件名字</span>
    26 </body>
    27 </html>

    二FileReader对象:读取文件里面的数据

       FileReader对象用于读取文件里面的数据,并将这些数据读入内存。根据文件类型,可以选择不同的读取文件,并在异步读取文件的过程中触发多个事件。

        1.FileReader对象

          HTML5中的FileReader对象一共有4个方法,readAsBinaryString以二进制方式读取文件,readAsText以文本方式读取文件,readAsDateURL以DateURL方式读取文件,abort方法是中断读取操作。FileReader对象有一个result属性,用于存储读取文件的结果。

        2.fileReader对象的事件

          FileReader对象在异步读取文件时会触发很多事件,根据不同的事件处理不同的操作,可以使程序更加人性化和健壮。

        3.以二进制方式读取文件

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>7.3.1</title>
    <script language="javascript">
    //以二进制方式读入文件
    function fileBinary()                        
    {
        var myDiv=document.getElementById("myDiv");
        //判断浏览器是否支持FileReader
    if(typeof FileReader=="undefined")
        {
            myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
            return false;    
        }    
        var file=document.getElementById("file").files[0];
        var reader=new FileReader();
        //以二进制方式读入文件
        reader.readAsBinaryString(file);
        reader.onload =function(e)
        {        
            myDiv.innerHTML=this.result;
        }
    }
    </script>
    </head>
    <body>
    <input type="file" id="file" />
    <input type="button" onClick="fileBinary();" value="二进制读取文件" />
    <div id="myDiv" name="myDiv"></div>
    </body>
    </html>

       4.以文本的方式读取文件

     

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>7.3.2</title>
    <script language="javascript">
    //以文本方式读取文件
    function fileText()
    {
        var myDiv=document.getElementById("myDiv");
        //判断浏览器是否支持FileReader
    if(typeof FileReader=="undefined")
        {
            myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
            return false;    
        }    
        var file=document.getElementById("file").files[0];
        var reader=new FileReader();
        //以文本方式读取文件
    reader.readAsText(file);
        reader.onload=function(e)
        {
            myDiv.innerHTML=this.result;
        }
    }
    </script>
    </head>
    <body>
    <input type="file" id="file" />
    <input type="button" onClick="fileText();" value="文本读取文件" />
    <div id="myDiv" name="myDiv"></div>
    </body>
    </html>

       5.以DateURL方式读取文件   

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>7.3.3</title>
    <script language="javascript">
    //以DataURL方式读取文件
    function fileDataURL()
    {
        var myDiv=document.getElementById("myDiv");
        //判断浏览器是否支持FileReader
    if(typeof FileReader=="undefined")
        {
            myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
            return false;    
        }
        var file=document.getElementById("file").files[0];
        //判断文件类型
    if(!/image/w+/.test(file.type))
        {
            myDiv.innerHTML="<h2>请选择图像文件!</h2>";
            return false;    
        }
        var reader=new FileReader();
        //以DataURL方式读取文件
    reader.readAsDataURL(file);
        reader.onload=function(e)
        {
            myDiv.innerHTML="<img src='"+this.result+"' />";
        }
    }
    </script>
    </head>
    <body>
    <input type="file" id="file" />
    <input type="button" onClick="fileDataURL();" value="DataURL读取文件" />
    <div id="myDiv" name="myDiv"></div>
    </body>
    </html>

    三.FileSystem对象

          1.FileSystem对象介绍

               FileSystem的主要功能有以下三个方面

               ①读取和处理文件:file/Blob、FileList、FileReader。

               ②创建和写入:BlobBuilder、FileWriter

               ③目录和文件系统访问:DirectoryReader、FileEntry/DirectoryEntry、LocalFileSystem。

          2.请求文件系统

                基于安全原因,Web应用通过浏览器的脚本去操作本地文件,首先需要获取操作许可,否则通过浏览器可以随意修改本地文件的是非常不安全的。通过调用Window.requestFileSystem()方法可以请求对文件系统的访问权限。

                Window.requestFileSystem()方法需要4个参数,各参数的含义如下所示:

                ①type文件存储是否应该持久。如果设置为window.TEMPORARY,当浏览器需要更多空间时可自行决定是否删除该文件;如果设置为window.PERSISTENT,则需要获取用户或应用的明确授权才可以删除。

               ②size指定请求文件的大小,以字节为单位。

               ③successCallback 当文件系统请求成功后的回调函数,参数为FileSystem对象。

               ④errorCallback 当文件系统请求失败或错误时的回调函数,参数为FileError对象。

      注意 :首次调用window.requestFileSystem()对象时,系统为应用创建一个沙箱文件,并为其指定一个名称。

               

  • 相关阅读:
    vue-router 实践
    修改vue中<router-link>的默认样式
    JSON.parse() 与 JSON.stringify() 的区别
    JS 中的异步操作
    CSS3 box-sizing:border-box的好处
    element ui 栅格布局
    css overflow用法
    koa中间件机制
    canvas 入门
    前端面试题:淘宝首页用了多少种标签
  • 原文地址:https://www.cnblogs.com/sunli0205/p/6261953.html
Copyright © 2011-2022 走看看