js实现图片上传并预览功能


Posted in Javascript onAugust 06, 2018

本文为大家分享了js实现图片上传并预览的具体代码,供大家参考,具体内容如下

思路:完成这个功能,首先需要美化上传图片的按钮,然后添加一个<img/>标签,在图片上传之后,用新图片的src替换原来<img/>标签中的src。

如下图所示,是原始的按钮样式:

js实现图片上传并预览功能

美化步骤:

(1)将上传图片标签采用绝对定位,使之位于一个图片,按钮,div等标签上。或者给图片,按钮或div设置绝对定位,总之,是要让上传文件按钮和用户指定的按钮重合。

(2)给上传图片标签设置大大小,使之和与它重叠的图片,按钮,div等标签大小一致。

(3)我将此标签设置为透明:opacity:0;

如下图所示,是两种美化后的上传图片按钮:

js实现图片上传并预览功能js实现图片上传并预览功能

接下来是完成图片预览的功能,步骤:

(1)首先需要定义好一个<img>,src为空或者是默认图片,

(2)如果src为空,就给定义好的img设置为透明:opacity:0;如果不是透明的话,会显示一个图片的标志,不美观。

(3)点击上传图片后,获取上传的图片的src,将它赋值给事先定义好的<img>,再给<img>设置opacity:1;

接下来为具体的代码示例。

 示例一:将图片上传到点击的位置。(此示例中使用了AUI框架,但不影响此功能。)

HTML代码:

<div id="imgPreview">
 <div id="prompt3">
 <span id="imgSpan">
 点击上传
 <br />
 <i class="aui-iconfont aui-icon-plus"></i>
 <!--AUI框架中的图标-->
 </span>
 <input type="file" id="file" class="filepath" onchange="changepic(this)" accept="image/jpg,image/jpeg,image/png,image/PNG">
 <!--当vaule值改变时执行changepic函数,规定上传的文件只能是图片-->
 </div>
 <img src="#" id="img3" />
</div>

 CSS代码:

#imgPreview {
 width: 40%;
 height: 180px;
 margin: 10px auto 0px auto;
 border: 1px solid black;
 text-align: center;
}
#prompt3 {
 width: 100%;
 height: 180px;
 text-align: center;
 position: relative;
}
#imgSpan {
 position: absolute;
 top: 60px;
 left: 40px;
}
.filepath {
 width: 100%;
 height: 100%;
 opacity: 0;
}
#img3 {
 height: 100%;
 width: 100%;
 display: none;
}

JS代码:

function changepic() {
 $("#prompt3").css("display", "none");
 var reads = new FileReader();
 f = document.getElementById('file').files[0];
 reads.readAsDataURL(f);
 reads.onload = function(e) {
 document.getElementById('img3').src = this.result;
 $("#img3").css("display", "block");
 };
}

效果如下图所示:

js实现图片上传并预览功能js实现图片上传并预览功能

示例二:将图片上传到点击按钮旁边的位置。(此示例中使用了阿里巴巴矢量图标库,但不影响此功能。)

HTML代码:

<div class="aui-col-xs-3" id="img">
 <svg class="icon bigIcon" aria-hidden="true">
 <use xlink:href="#icon-msnui-add"></use>
 </svg>
 <!--阿里巴巴矢量图标,就是最后效果图中的“+”图标-->
 <div class="aui-grid-label">添加图片</div>
 <div id="upImg">
 <input type="file" name="file" id="chooseImage" />
 </div>
 <div id="imgPreview">
 <img src="#" id="cropedBigImg" />
 </div>
</div>

 CSS代码:

#img {
 float: left;
 margin-left: 20px;
 width: 150px;
 height: 60px;
 }
#upImg {
 position: absolute;
 top: 0px;
 left: 0px;
}
#upImg input {
 width: 70px;
 height: 60px;
 opacity: 0;
}
#imgPreview {
 width: 80px;
 height: 60px;
 position: absolute;
 left: 70px;
 top: 0px;
}
#cropedBigImg{
 width: 100%;
 height: 100%;
 display: none;
}

JS代码:

$('#chooseImage').on('change', function() {//当chooseImage的值改变时,执行此函数
 var filePath = $(this).val(), //获取到input的value,里面是文件的路径
 fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
 src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式
 
 // 检查是否是图片
 if(!fileFormat.match(/.png|.jpg|.jpeg/)) {
 error_prompt_alert('上传错误,文件格式必须为:png/jpg/jpeg');
 return;
 }else{
 $('#cropedBigImg').css('display','block');
 $('#cropedBigImg').attr('src', src); 
 } 
});

效果如下图所示:

js实现图片上传并预览功能js实现图片上传并预览功能

 本人为JS实习生一枚,不断学习,不断进步,欢迎各位前辈批评指教。

如果大家想对JS有更加深入系统的学习,可以参阅 JavaScript忍者秘籍 这本经典书籍。

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

Javascript 相关文章推荐
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
Jan 14 Javascript
使用Node.js处理前端代码文件的编码问题
Feb 16 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
轻松实现jquery选项卡切换效果
Oct 10 Javascript
jQuery的事件预绑定
Dec 05 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
使用JavaScript开发跨平台的桌面应用详解
Jul 27 Javascript
Bootstrap 树控件使用经验分享(图文解说)
Nov 06 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 #Javascript
微信小程序网络封装(简单高效)
Aug 06 #Javascript
json字符串传到前台input的方法
Aug 06 #Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 #Javascript
react-native使用leanclound消息推送的方法
Aug 06 #Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 #Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 #Javascript
You might like
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
台湾家适得:Homeget
2019/02/11 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
应届生的求职推荐信范文
2013/11/30 职场文书
投标单位介绍信
2014/01/09 职场文书
二年级数学教学反思
2014/01/21 职场文书
先进班集体申报材料
2014/12/26 职场文书
个人委托书范文
2015/01/28 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript