要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的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用法相关推荐

  1. FileReader()用法

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

  2. HTML5 autofocus属性用法简单介绍

    本章节简单介绍一下HTML5中新增的一个属性autofocus,它可以让一个元素加载后获取焦点,在此之前一般要通过使用javascript的focus()方法实现我们的要求,非常的简单,代码如下: 1 ...

  3. html5使用阴影,HTML5 Canvas阴影用法演示

    HTML5 Canvas阴影用法演示 HTML5 Canvas中提供了设置阴影的四个属性值分别为: context.shadowColor = "red" 表示设置阴影颜色为红色 ...

  4. html页面视频标签,html5基础标签(html5视频标签 html5新标签用法)

    点评:html5基础,包括html5视频标签和html5新标签等标签用法,大家参考使用吧 1.  声明的变化 2.  指定字符编码的变化,html5中建议使用utf-8 3.  Html5中允许 没有 ...

  5. HTML5 通过 FileReader 实现文件上传

    概述 在页面中上传时,之前一般都是需要使用form表单进行上传.html5 中提供了FileReader 可以将文件转换成Base64编码字符串,因此就可以直接使用 AJAX实现文件上传. 实现代码 ...

  6. html访问手机相册,使用HTML5的FileReader读取手机图片(还可选择拍照), 并自动异步上传到服务器上...

    使用html5 FileReader获取图片,并异步上传到服务器(not iframe) body{margin: 0px; background:#f2f2f0;} p{margin:0px;} . ...

  7. HTML5之FileReader的使用

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

  8. 网站开发进阶(三十二)HTML5之FileReader的使用

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

  9. html5 新标签用法,Html5新标签解释及用法

    HTM.轻厅设近幸松.备近幸松.备近幸松.备近L 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.它希望能够减少浏 ...

最新文章

  1. java和python哪个好就业2020-java和python哪个未来发展比较好?
  2. iOS 自带 MD5转化
  3. sainsbury newspaper collection time
  4. 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序
  5. dom4kj解析xml
  6. xfce4的右键打开终端失效
  7. 如何启用nodejs request模块的调试模式
  8. 近似算法的近似率_选择最佳近似最近算法的数据科学家指南
  9. 计算机对口高考文化试卷,计算机对口高考模拟试卷
  10. PHP双码率视频云转码服务系统源码 m3u8切片秒切html5播放器 全开源
  11. 区块链 以太坊 全局变量 msg包括哪些字段
  12. window 平台下mysql主从的监控(window执行计划配合vb脚本)
  13. 魔兽争霸如何修改快捷键
  14. 自学编程的六种方法,你必须知道?
  15. 配置Windows静态IP地址
  16. 重复在学习中的重要性
  17. golang 获取map所有key的方式
  18. Cadence OrCAD Capture 查找功能详细介绍
  19. python基于PHP+MySQL的药店药品进销存管理系统
  20. HTML链接CSS的三种方法

热门文章

  1. Exadata使用技巧 (-)
  2. MAX31856中文文档
  3. 宝马E91318D读写EDC17 C41与KESS V2 DDE8错误
  4. 图书查询系统的工作原理
  5. 【老王的脑科学谬论】CSDN问答区老王谬论悬赏辩论赛二番战(再次求锤失败4月6日已结题)
  6. C# Cookie跨域实例
  7. 爬虫学习第三天,urllib中的handler
  8. linux启动ib驱动命令,linux安装IB驱动方法
  9. 爬取数据出现乱码的解决方法
  10. STM32的全系列MCU的ID号的地址及读取方法