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 相关文章推荐
一款Jquery 分页插件的改造方法(服务器端分页)
Jul 11 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
js瀑布流布局的实现
Jun 28 Javascript
JS实现扫雷项目总结
May 19 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实现框架(二)
2006/10/09 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
VUE 动态组件的应用案例分析
2019/12/02 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Python线性方程组求解运算示例
2018/01/17 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python实现AI换脸功能
2020/04/10 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
美国休闲服装品牌:Express
2016/09/24 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
社区维稳工作方案
2014/06/06 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js