原文:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201706224590.html

在上传图片到服务器之前,我们希望可以预览一下要上传的图片。这个功能可以通过HTML5 的FileReader()方法来实现。
FileReader是HTML5 File API的一部分。它实现了一种异步文件读取机制。可以把FileReader想象为XMLHttpRequest,区别只是它读取的是文件系统,而不是远程服务器。为了读取文件中的数据,FileReader提供了如下几个方法。
readAsText(file,encoding):以纯文本的方式读取文件,将读取到的文件保存到result属性中。
readAsDataURL(file):读取文件并将文件以数据URI的形式保存在result属性中。
readAsBinaryString(file):读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一个字节。
readAsArrayBuffer(file):读取文件并将一个包含文件内容的ArrayBuffer保存在result属性中。
通过readAsDataURL(file)方法,我们就可以将读取到的图片数据以URI的方式显示在页面中。
例如下面是一个上传图片预览的例子:
选择文件 上面例子中的HTML代码如下:
<div id="wrapper">
<input id="fileUpload" type="file" /><br />
<div id="image-holder"> </div>
</div>
下面是结合jQuery和FileReader来实现上传图片预览的代码:
$("#fileUpload").on('change', function () { if (typeof (FileReader) != "undefined") { var image_holder = $("#image-holder");
image_holder.empty(); var reader = new FileReader();
reader.onload = function (e) {
$("<img />", {
"src": e.target.result,
"class": "thumb-image"
}).appendTo(image_holder); }
image_holder.show();
reader.readAsDataURL($(this)[0].files[0]);
} else {
alert("你的浏览器不支持FileReader.");
}
});
实现多张图片预览效果
先来看看效果,下面是一个可以预览多张上传图片的例子。
选择文件 在前面我们已经可以预览一张上传的图片。要想实现多张图片预览效果,必须在文件上传标签中添加multiple属性,使它可以选择多张图片。
<div id="wrapper">
<input id="fileUpload" type="file" multiple /><br />
<div id="image-holder"> </div>
</div>
然后修改一下上面的jQuery代码,使用一个循环来遍历所有要上传的图片,最后将它们分别显示出来。
$("#fileUpload").on('change', function () { //获取上传文件的数量
var countFiles = $(this)[0].files.length; var imgPath = $(this)[0].value;
var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
var image_holder = $("#image-holder");
image_holder.empty(); if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
if (typeof (FileReader) != "undefined") { // 循环所有要上传的图片
for (var i = 0; i < countFiles; i++) { var reader = new FileReader();
reader.onload = function (e) {
$("<img />", {
"src": e.target.result,
"class": "thumb-image"
}).appendTo(image_holder);
} image_holder.show();
reader.readAsDataURL($(this)[0].files[i]);
} } else {
alert("你的浏览器不支持FileReader!");
}
} else {
alert("请选择图像文件。");
}
});
HTML5 FileReader 可以在 Internet Explorer 10+、FireFox,、Chrome 和Opera浏览器中正常工作。

最新文章

  1. 创建几个常用table展示方式插件
  2. C#_技巧:字符串分组排序
  3. OstrichNet 简易统计信息收集工具
  4. Velocity简单语法及VelocityHelper封装
  5. WeX5 - AJAX跨域调用相关知识-CORS和JSONP
  6. Linux下目标文件分析
  7. SQL Server 2012 管理新特性:AlwaysOn【转】
  8. HDU 4064 Carcassonne(插头DP)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
  9. Apache使用mod_deflate模块压缩页面优化传输速度
  10. [反汇编练习] 160个CrackMe之020
  11. 根据字符串计算UILabel尺寸
  12. operation 多线程
  13. 我的第一个html计算器
  14. 使用阿里百川HotFix
  15. 构建自己的 PHP 框架
  16. poj 1265 Area 面积+多边形内点数
  17. Java 8 Stream介绍及使用1
  18. Qt之菜单栏工具栏入门
  19. (摘录)Java 详解 JVM 工作原理和流程
  20. [CF1137E]Train Car Selection[维护凸壳]

热门文章

  1. 启动Chrome浏览器弹出“You are using an unsupported command-line flag –ignore-certificate-errors. Stability and security will suffer”
  2. MongoDB学习--&gt;命令行增删改查&amp;JAVA驱动操作Mongodb
  3. Sogou日志分析(hive)
  4. 什么是WSDL
  5. Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_IOC
  6. Golang遇到的问题记录
  7. Python Excel导入数据库
  8. Linux System Programming 学习笔记(八) 文件和目录管理
  9. 页面之间传值的方法asp
  10. 百度图表echars插件使用案例