H5上传本地图片并预览功能


Posted in Javascript onMay 08, 2017

最近工作中需要H5上传显示图片的功能,如图:

H5上传本地图片并预览功能

直接上代码:

html部分

<div class="works-wrap"> 
 <div class="figure-box" id="figure_box"></div> 
 <div class="add-btn"> 
 <input type="file" id="imgUploadBtn" /> 
 <a href="javascript:void(0);" rel="external nofollow" ><i></i>添加作品</a></div> 
 </div> 
</div>

我这边用css将input[type=file] 设置成了opticy:0; 这样可以看起来更像原生的上传。

var addWork = { 
 add: function(btn, figure_box) { 
 var figureBox = document.getElementById(figure_box); //获取显示图片的div元素 
 var input = document.getElementById(btn); //获取选择图片的input元素 
 //这边是判断本浏览器是否支持这个API。 
 if (typeof FileReader === 'undefined') { 
 alert("浏览器版本过低,请先更新您的浏览器~"); 
 input.setAttribute('disabled', 'disabled'); 
 } else { 
 input.addEventListener('change', readFile, false); 

 //如果支持就监听改变事件,一旦改变了就运行readFile函数。 
 } 
 
 function readFile() { 
 var file = this.files[0]; //获取file对象 
 //判断file的类型是不是图片类型。 
 if (!/image\/\w+/.test(file.type)) { 
 alert("请上传一张图片~"); 
 return false; 
 } 
 
 var reader = new FileReader(); //声明一个FileReader实例 
 reader.readAsDataURL(file); //调用readAsDataURL方法来读取选中的图像文件 
 //最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片 
 reader.onload = function(e) { 
 // 创建一个新增的图片和文字input 
 var figure = $('<div class="figure"><div class="figure-hd">我的头部</div><div class="figure-bd"><img src="' + this.result + '" /><textarea placeholder="请输入文字"></textarea></div></div>'); 
 figure.appendTo(figureBox); 
 } 
 } 
 } 
}

更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
什么是JavaScript
Aug 13 Javascript
js实现在页面上弹出蒙板技巧简单实用
Apr 16 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
深入分析Javascript事件代理
Jan 30 Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 Javascript
使用three.js 画渐变的直线
Jun 05 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
Aug 10 Javascript
Node.js学习入门
Jan 03 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
浅谈webpack 自动刷新与解析
Apr 09 Javascript
基于VUE实现的九宫格抽奖功能
Sep 30 Javascript
小程序实现搜索框功能
Mar 26 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 #jQuery
vue2.0实现导航菜单切换效果
May 08 #Javascript
jquery replace方法去空格
May 08 #jQuery
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 #jQuery
html5+canvas实现支持触屏的签名插件教程
May 08 #Javascript
JQuery实现图片轮播效果
May 08 #jQuery
jQuery中的deferred对象和extend方法详解
May 08 #jQuery
You might like
用php和MySql来与ODBC数据连接
2006/10/09 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
jQuery使用手册之一
2007/03/24 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python备份Mysql脚本
2008/08/11 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python实现一个优先级队列的方法
2020/07/31 Python
python中pyplot基础图标函数整理
2020/11/10 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
几道PHP的面试题
2012/05/19 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
个人自我评价分享
2013/12/20 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
个人工作表现评价材料
2014/09/21 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android