通过HTML5 FileReader实现上传图片预览功能
2024-09-19 08:10:10
原文: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浏览器中正常工作。
最新文章
- 创建几个常用table展示方式插件
- C#_技巧:字符串分组排序
- OstrichNet 简易统计信息收集工具
- Velocity简单语法及VelocityHelper封装
- WeX5 - AJAX跨域调用相关知识-CORS和JSONP
- Linux下目标文件分析
- SQL Server 2012 管理新特性:AlwaysOn【转】
- HDU 4064 Carcassonne(插头DP)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
- Apache使用mod_deflate模块压缩页面优化传输速度
- [反汇编练习] 160个CrackMe之020
- 根据字符串计算UILabel尺寸
- operation 多线程
- 我的第一个html计算器
- 使用阿里百川HotFix
- 构建自己的 PHP 框架
- poj 1265 Area 面积+多边形内点数
- Java 8 Stream介绍及使用1
- Qt之菜单栏工具栏入门
- (摘录)Java 详解 JVM 工作原理和流程
- [CF1137E]Train Car Selection[维护凸壳]
热门文章
- 启动Chrome浏览器弹出“You are using an unsupported command-line flag –ignore-certificate-errors. Stability and security will suffer”
- MongoDB学习-->;命令行增删改查&;JAVA驱动操作Mongodb
- Sogou日志分析(hive)
- 什么是WSDL
- Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_IOC
- Golang遇到的问题记录
- Python Excel导入数据库
- Linux System Programming 学习笔记(八) 文件和目录管理
- 页面之间传值的方法asp
- 百度图表echars插件使用案例