JS+HTML5 FileReader实现文件上传前本地预览功能


Posted in Javascript onMarch 27, 2020

HTML5之FileReader的使用

HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。

FileReader的使用方式非常简单,可以按照如下步骤创建FileReader对象并调用其方法:

1.检测浏览器对FileReader的支持

if(window.FileReader) { 
 var fr = new FileReader(); 
 // add your code here 
} 
else { 
 alert("Not supported by your browser!"); 
}

2. 调用FileReader对象的方法

FileReader 的实例拥有 4 个方法,其中 3 个用以读取文件,另一个用来中断读取。下面的表格列出了这些方法以及他们的参数和功能,需要注意的是 ,无论读取成功或失败,方法并不会返回读取结果,这一结果存储在 result属性中。

eadAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。

readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。

readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。

下面通过一个上传图片预览和带进度条上传来展示FileReader的使用。

<script type="text/javascript"> 
 function showPreview(source) { 
  var file = source.files[0]; 
  if(window.FileReader) { 
  var fr = new FileReader(); 
  fr.onloadend = function(e) { 
   document.getElementById("portrait").src = e.target.result; 
  }; 
  fr.readAsDataURL(file); 
  } 
 } 
 </script>
<input type="file" name="file" onchange="showPreview(this)" /> 
<img id="portrait" src="" width="70" height="75">
if(!/image\/\w+/.test(file.type)){ 
 alert("请确保文件为图像类型"); 
 return false; 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 Javascript
jQuery中调用WebService方法小结
Mar 28 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
Jan 23 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
js实现漫天星星效果
Jan 19 Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 Javascript
基于jQuery实现定位导航位置效果
Nov 15 jQuery
js类的继承定义与用法分析
Jun 21 Javascript
vue键盘事件点击事件加native操作
Jul 27 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 #Javascript
用户管理的设计_jquery的ajax实现二级联动效果
Jul 13 #jQuery
通过命令行生成vue项目框架的方法
Jul 12 #Javascript
微信小程序实现点击返回顶层的方法
Jul 12 #Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 #Javascript
JQuery EasyUI的一些常用组件
Jul 12 #jQuery
JavaScript严格模式下关于this的几种指向详解
Jul 12 #Javascript
You might like
从手册去理解分析PHP session机制
2011/07/17 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
js 小贴士一星期合集
2010/04/07 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
《花木兰》教学反思
2014/04/09 职场文书
保护环境标语
2014/06/09 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
团员年度个人总结
2015/02/26 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS