HTML5 之 FileReader(图片上传)

 

 

1、FileReader接口的方法

  FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

  FileReader接口的方法:

    1. readAsBinaryString(file) : 将文件读取为二进制编码,

    2. readAsText(file,[encoding]) : 将文件读取为文本,

    3. readAsDataURL(file) : 将文件读取为DataURL,

    4. abort(none) : 中断读取操作.

2、FileReader接口事件

  FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

    1. onabort : 中断,

    2. onerror : 出错,

    3. onloadstart : 开始,

    4. onprogress : 正在读取,

    5. onload : 读取成功,

    6. onloadend : 读取完成,无论成功失败(无论成功失败)。

3、FileReader接口的使用

复制代码
 1 <script type="text/javascript">  
 2 var result=document.getElementById("result");  
 3 var file=document.getElementById("file");  
 4   
 5 //判断浏览器是否支持FileReader接口  
 6 if(typeof FileReader == 'undefined'){  
 7     result.InnerHTML="<p>你的浏览器不支持FileReader接口!</p>";  
 8     //使选择控件不可操作  
 9     file.setAttribute("disabled","disabled");  
10 }  
11   
12 function readAsDataURL(){  
13     //检验是否为图像文件  
14     var file = document.getElementById("file").files[0];  
15     if(!/image\/\w+/.test(file.type)){  
16         alert("看清楚,这个需要图片!");  
17         return false;  
18     }  
19     var reader = new FileReader();  
20     //将文件以Data URL形式读入页面  
21     reader.readAsDataURL(file);  
22     reader.onload=function(e){  
23         var result=document.getElementById("result");  
24         //显示文件  
25         result.innerHTML='<img src="' + e.target.result +'" alt="" />';  
26     }  
27 }  
28   
29 function readAsBinaryString(){  
30     var file = document.getElementById("file").files[0];  
31     var reader = new FileReader();  
32     //将文件以二进制形式读入页面  
33     reader.readAsBinaryString(file);  
34     reader.onload=function(f){  
35         var result=document.getElementById("result");  
36         //显示文件  
37         result.innerHTML=this.result;  
38     }  
39 }  
40   
41 function readAsText(){  
42     var file = document.getElementById("file").files[0];  
43     var reader = new FileReader();  
44     //将文件以文本形式读入页面  
45     reader.readAsText(file);  
46     reader.onload=function(f){  
47         var result=document.getElementById("result");  
48         //显示文件  
49         result.innerHTML=this.result;  
50     }  
51 }  
52 </script>  
53 <p>  
54     <label>请选择一个文件:</label>  
55     <input type="file" id="file" />  
56     <input type="button" value="读取图像" onclick="readAsDataURL()" />  
57     <input type="button" value="读取二进制数据" onclick="readAsBinaryString()" />  
58     <input type="button" value="读取文本文件" onclick="readAsText()" />  
59 </p>  
60 <div id="result" name="result"></div>  



实例:
dom:
<label v-if="show.photo==true" for="filePhoto" class="photo">
  <input id="filePhoto" type="file" @change="filePhotoChange($event)">
  <img :src="design.image" alt="照片">
</label>
 
js:
 
filePhotoChange(event){//照片文件筐改变事件
  var self = this;
  var files = event.target.files, file;
  if (files && files.length > 0) {
    // 获取目前上传的文件
    file = files[0];
    if(!tool.formatUpload(file)){// 文件大小校验的动作 是否为图片 以及图片不能超过3M
      return false;
    }
    let reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function (e) {
      console.log(e.target.result);
      self.design.image = e.target.result;
    }
  }
}


posted @ 2019-01-04 19:11  古墩古墩  Views(838)  Comments(0Edit  收藏  举报