HTML5的FileReader用法
要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的URL返回到前端,前端通过这个URL来显示图片。而HTML5的FileReader接口支持本地预览,FileReader接口主要是将文件读入内存,并提供相应的方法,来读取文件中的数据,当然就能显示本地图片不需上传了。目前高级浏览器实现了FileReader接口,所以像IE6这些老东西直接滚粗。
在此之前,我们有文章:HTML5应用之文件拖拽上传,看完这篇文章后,你可以尝试制作一个拖拽和显示图片、编辑图片、最后上传的功能。
HTML
第一步创建html,我们在页面中放置一个文件选择的input#file_input和一个显示结果的div#result。
<p> <label>请选择一个图像文件:</label> <input type="file" id="file_input" />
</p>
<div id="result"></div>
Javascript
通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。
var result = document.getElementById("result");
var input = document.getElementById("file_input"); if(typeof FileReader==='undefined'){ result.innerHTML = "抱歉,你的浏览器不支持 FileReader"; input.setAttribute('disabled','disabled');
}else{ input.addEventListener('change',readFile,false);
}
然后,当file_input的change事件触发时,调用函数readFile()。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。
function readFile(){ var file = this.files[0]; if(!/image\/\w+/.test(file.type)){ alert("文件必须为图片!"); return false; } var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e){ result.innerHTML = '<img src="'+this.result+'" alt=""/>' }
}
怎么样,可以看来我们并没有和后台交互就能将本地图片显示在页面中,最后我们来了解下FileReader的方法和事件。
FileReader的方法和事件
参数/事件 | 描述 |
方法 | |
abort | 中断读取 |
readAsText(file, [encoding]) |
将文件读取为文本 该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。 |
readAsBinaryString(file) |
将文件读取二进制码 通常我们将它传送到后端,后端可以通过这段字符串存储文件 |
readAsDataURL(file) |
将文件读取为DataURL 将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件。 |
事件 | |
onabort | 数据读取中断时触发 |
onerror | 数据读取出错时触发 |
onloadstart | 数据读取开始时触发 |
onload | 数据读取成功完成时触发 |
onloadend | 数据读取完成时触发,无论成功失败 |
HTML5的FileReader用法相关推荐
- FileReader()用法
FileReader()用法 HTML5定义了FileReader作为文件API的重要成员用于读文件,根据W3C的定义,FileReaderr接口提供了读取文件的方法和包含读取 结果的事件模型. Fi ...
- HTML5 autofocus属性用法简单介绍
本章节简单介绍一下HTML5中新增的一个属性autofocus,它可以让一个元素加载后获取焦点,在此之前一般要通过使用javascript的focus()方法实现我们的要求,非常的简单,代码如下: 1 ...
- html5使用阴影,HTML5 Canvas阴影用法演示
HTML5 Canvas阴影用法演示 HTML5 Canvas中提供了设置阴影的四个属性值分别为: context.shadowColor = "red" 表示设置阴影颜色为红色 ...
- html页面视频标签,html5基础标签(html5视频标签 html5新标签用法)
点评:html5基础,包括html5视频标签和html5新标签等标签用法,大家参考使用吧 1. 声明的变化 2. 指定字符编码的变化,html5中建议使用utf-8 3. Html5中允许 没有 ...
- HTML5 通过 FileReader 实现文件上传
概述 在页面中上传时,之前一般都是需要使用form表单进行上传.html5 中提供了FileReader 可以将文件转换成Base64编码字符串,因此就可以直接使用 AJAX实现文件上传. 实现代码 ...
- html访问手机相册,使用HTML5的FileReader读取手机图片(还可选择拍照), 并自动异步上传到服务器上...
使用html5 FileReader获取图片,并异步上传到服务器(not iframe) body{margin: 0px; background:#f2f2f0;} p{margin:0px;} . ...
- HTML5之FileReader的使用
HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...
- 网站开发进阶(三十二)HTML5之FileReader的使用
一.前言 HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使 ...
- html5 新标签用法,Html5新标签解释及用法
HTM.轻厅设近幸松.备近幸松.备近幸松.备近L 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.它希望能够减少浏 ...
最新文章
- java和python哪个好就业2020-java和python哪个未来发展比较好?
- iOS 自带 MD5转化
- sainsbury newspaper collection time
- 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序
- dom4kj解析xml
- xfce4的右键打开终端失效
- 如何启用nodejs request模块的调试模式
- 近似算法的近似率_选择最佳近似最近算法的数据科学家指南
- 计算机对口高考文化试卷,计算机对口高考模拟试卷
- PHP双码率视频云转码服务系统源码 m3u8切片秒切html5播放器 全开源
- 区块链 以太坊 全局变量 msg包括哪些字段
- window 平台下mysql主从的监控(window执行计划配合vb脚本)
- 魔兽争霸如何修改快捷键
- 自学编程的六种方法,你必须知道?
- 配置Windows静态IP地址
- 重复在学习中的重要性
- golang 获取map所有key的方式
- Cadence OrCAD Capture 查找功能详细介绍
- python基于PHP+MySQL的药店药品进销存管理系统
- HTML链接CSS的三种方法