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 相关文章推荐
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
javascript滚轮控制模拟滚动条
Oct 19 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
js实现带缓动动画的导航栏效果
Jan 16 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
vue的常用组件操作方法应用分析
Apr 13 Javascript
小程序分享模块超级详解(推荐)
Apr 10 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
js实现多张图片每隔一秒切换一张图片
Jul 29 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 addslashes 函数详细分析说明
2009/06/23 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP重定向的3种方式
2013/03/07 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
Python中为什么要用self探讨
2015/04/14 Python
简单理解Python中的装饰器
2015/07/31 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python基于ID3思想的决策树
2018/01/03 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python多线程分块读取文件
2019/08/29 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python怎么自定义捕获错误
2020/06/29 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
企业活动策划方案
2014/06/02 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
代办社保委托书范文
2014/10/06 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang