HTML5+CSS3的读书笔记(six)---文件系统

117 阅读1分钟

文件系统

File API主要接口说明

  对象              接口
FileList         FileList[index]         得到第index个文件
Blob             size                    只读特性,数据的字节数
Blob             slice(start,length)    将当前文件切割并将结果返回
File API---FileReader方法
对象FileReader的四个接口方法
--readAsBinaryString(blob,file)
--readAsText(file,[encoding])
--readAsDataURL(file)
--abort()
File API---FileReader事件
对象FileReader的八个事件
--onloadstart
--onload
--onloadend
--onprogress(读取操作过程中触发)
--onabort
--onerror
--result(读取的结果二进制、文本、dataURL格式)
--readyState(读取操作的状态EMPTY\LOADING\DONE)
判断浏览器是否支持

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head>
<body>

         <style type="text/css">
         #content{width:600px; height:300px; border: 1px solid #ddd; 
          overflow: auto; margin-top:10px;}
         </style>
         <script type="text/javascript">
         function isSupportFileApi() {
             if(window.File && window.FileList && window.FileReader && window.Blob) {
                return true;
             }
            return false;
         }
         </script>
</body>
</html>

1.表单输入选择文件


<!DOCTYPE html>
<html> 
  <head>
       <meta charset="UTF-8">
       <title></title>         
       <style type="text/css">
             #fileContent{
                          width:600px;
                          height:300px; 
                          border: 1px solid #ddd; 
                          overflow: auto; 
                          margin-top:10px;
                          }
       </style>
        <script type="text/javascript">
            window.onload = function() {
            var filevar = document.getElementById("fileinput");
            var contentvar = document.getElementById("fileContent");
            filevar.addEventListener("change", function(ev) {
            var event = ev || window.event;
            var files = this.files;
            for (var i = 0, len = files.length; i < len; i++) {
                  var reader = new FileReader();
                  var file = files[i];
                  reader.onload = (function(file) {
                     return function(e) {
                           var div = document.createElement('div');
                           div.innerHTML =this.result;
                           contentvar.insertBefore(div, null);
                     };
              })(file);
              //读取文件内容
              reader.readAsText(file,"gb2312");
          }
     }, false);
 }
</script>
    </head>
    <body>
         <input type="file" name="" id="fileinput" value="" multiple="multiple" />
   </body>
   <div id="fileContent"></div>
</html>
2.拖曳选择文件

<!DOCTYPE html>
<html>
     <head>
          <meta charset="utf-8">
          <title></title>
          <style type="text/css">
          #dragarea{width:100%;height:200px; line-height: 200px; text-align: center; 
          border: 1px solid #DDDDDD;}
              #preview{width:100%;min-height: 400px; border: 1px solid #FF0000;}
          </style>
        <script type="text/javascript">
          window.onload = function(){
          var vArea = document.getElementById("dragarea");
          var vPrev = document.getElementById("preview");        
          vArea.ondragenter = function(){
               vArea.innerHTML = "请释放鼠标";
          }
          vArea.ondragleave = function(){
               vArea.innerHTML = "将图片拖放到此区域";
          }
          vArea.ondragover = function(ev){
               ev.preventDefault();
          }
          vArea.ondrop = function(ev){
               ev.preventDefault();
               var files = ev.dataTransfer.files;
               for(var i = 0 , len = files.length;i<len;i++){
                     var file = files[i];
                     var reader = new FileReader();
                     reader.readAsDataURL(file);
                     (function(reader){
                           reader.onload = function(){
                                 var vImg = document.createElement("img");
                                 vImg.src = this.result;
                                 vPrev.appendChild(vImg);
                          }
                     })(reader);
               }            
        }        
    }
</script>
       </head>
       <body>
          <div id="dragarea">将图片拖放到此区域</div>
          <h1>图片预览</h1>
          <hr>
          <div id="preview"></div>
</body>
</html>