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 @   古墩古墩  Views(842)  Comments(0Edit  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示