• 文件操作


      FileList对象

     它是File对象的一个集合,在HTML4标准中文件上传控件只接受一个文件,而在新标准中,只需要设置multiple,就支持多文件上传,所以从此标签中获取的files属性就是FileList对象实例。

     <input type="file" mutiple="multiple" name="filedemo" id="filedemo">

    API:

      interface FileList{

        getter File? item(unsigned long index);

        readonly attribute unsigned long length;

     }

      Blog对象

     一个原始数据对象,提供了slice方法可以读原始数据中的某块数据。另外有两个属性:size(数据的大小)和type(数据的MIME类型)。

    API:

      interface Blob{

        readonly attribute unsigned long long size;

        readonly attribute DOMString type;

        Blob slice{

          optional long long start,

          optional long long end,

          optional DOMString contentType

        }

     }

      File对象

     继承自Blob对象,指向一个具体的文件,它还有两个属性:name和lastModifiedDate

    API:

      interface File : Blob{

        readonly attribute DOMString name;

        readonly attribute Date lastModifiedDate;

      }

      FileReader对象

     设计用来读取文件里面的数据,提供三个常用的读取文件数据的方法,另外读取文件数据使用了异步的方式,十分有效。

    API:  

     [Constructor]

     interface FileReader : EventTarget{

      void readAsArrayBuffer(Blob blob);

      void readAsBinaryString(Blob blob);  //传入一个Blob对象,然后读取数据的结果作为二进制字符串的形式放到FileReader的result属性中

      void readAsText(Blob blob, optional DOMString encoding);  //第一个参数传入Blob对象,第二个参数传入编码格式,异步将数据读取成功后放到result属性中读取内容是普通的文本字符串的形式

      void readAsDataURL(Blob blob);  //传入一个Blob对象,读取内容可以作为URL属性

      void abort();

      

      const unsigned short EMPTY = 0;

      const unsigned short LOADING = 1;

      const unsigned short DONE = 2;

      

      readonly attribute unsigned short readyState;

      

      readonly attribute any result;

      readonly attribute DOMError error;

      

      attribute [TreaNonCallableAsNull] Function? onloadstart?

      attribute [TreatNonCallableAsNull] Function? onprogress?

      attribute [TreatNonCallableAsNull] Function? onload?

      attribute [TreatNonCallableAsNull] Funtcion? onabosrt?

      attribute [TreatNonCallableAsNull] Function? onerror?

      attribute [TreatNonCallableAsNull] Function? onloadend;

     }

     这个对象提供了四个读取文件数据的方法,这些方法都是以异步的方式读取数据,读取成功后直接将结果存放到属性result中。所以一般都是直接读取数据,然后监听次对象的onload事件,然后在事件里读取result属性,再做后续处理。

      

      获取上传文件的文件名

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

      <html xmlns="http://www.w3.org/1999/xhtml">

        <head>

          <title></title>

          <script src="jquery-1.5.1.js" type="text/javascript" />

          <script type="text/javascript">

            $(function(){

              $("#btnGetFile").click(function(e){

                var fileList = document.getElementById("filedemo").files;

                for(var i = 0; i < fileList.length; i++){

                  if(!(/image/w+/.test(fileList[i]).type))){

                   $("#result").append("<span>type:"+fileList[i].type+"--非图片类型--name:"+fileList[i].name+"--size:"+fileList[i].size+"</span><br />");      

                  }else{

                    $("#result").append("<span>type:"+fileList[i].type+"--name:"+fileList[i].name+"--size:"+fileList[i].size+"</span><br />");

                  }

                }

              });

            });

          </script>

        </head>

        <body>

          <form action="" method="POST" novalidate="true">

            <input type="file" multiple="miltiple" name="filedemo" id="filedemo" /><br />

            <input type="button" value="获取文件名字" id="btnGetFile" />

            <div id="result"></div>

          </form>

          <hr />

        </body>

      </html>

      

      读取文件上传内容并将文件内同直接读取到浏览器上

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

      <html xmlns="http://www.w3.org/1999/xhtml">

        <head>

          <titile></title>

          <script src="jquery-1.5.1.js" type="text/javascript" />

          <script>

            if(typeof FileReader == "undefied")

              alert("浏览器过老");

            

            function showDataByURL(){

              var resultFile = document.getElementById("filedemo").files[0];

              if(resultFile){

                var reader = new FileReader();

                reader.readAsDataURL(resultFile);

                reader.onload = function(e){  

                  var urlData = this.result;

                  document.getElementById("result").innerHTML += "<img src='"+urlData+ "' alt='" +resultFile.name+"' />";

                };

              }

            }

            function showDateByBinaryString(){

              var resultFile = document.getElementById("filedemo").files[0];

              if(resultFile){

                var reader = new FileReader();

                reader.readAsBinaryString(resultFile);

                reader.onload = function(e){

                  var urlData = this.result;

                  document.getElementById("result").innerHTML += urlData;

                };

              }

            }

            

            function showDataByText(){

              var resultFile = document.getEementById("filedemo").files[0];

              if(resultFile){

                var reader = new FileReader();

                reader.readAsText(resultFile, 'gb2312');

                reader.onload = function(e){  

                  var urlData = this.result;

                  document.getElementById("result").innerHTML += urlData;

                }

              }

            }

          </script>

        </head>

        <body>

          <input type="file" name="filedemo" id="filedemo" multep />

          <input type="button" value="readAsDataURL" id="readAsDataURL" onclick="showDataByURL();" />

          <input type="button" value="readAsBinaryString" id="readAsBinaryString" onclick="showDataByBinaryString();" />

          <input type="button" value="readAsText" id="readAsText" onclick="showDataByText();" />

          <div id="result" /> 

        </body>

      </html>

     

  • 相关阅读:
    echarts数据包坐标拾取工具
    JS 多个条件判断
    js 实现各浏览器全屏
    前端统计使用插件
    JS 随机排序算法
    js中布尔值为false的六种情况
    Mosaic
    单点登录
    JavaScript数据结构和算法
    一个普通函数的冷僻属性(length、caller、arguments、name、[[Scopes]]和[[FunctionLocation]])
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4807502.html
Copyright © 2020-2023  润新知