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 跳转代码集合
Dec 03 Javascript
JQuery文本框高亮显示插件代码
Apr 02 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
Dec 27 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
详解Webpack多环境代码打包的方法
Aug 03 Javascript
Vue的watch和computed方法的使用及区别介绍
Sep 06 Javascript
JavaScript监听键盘事件代码实现
Jun 03 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python 的 Socket 编程
2015/03/24 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python实现的读写json文件功能示例
2018/06/05 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python装饰器原理与用法深入详解
2019/12/19 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
服务标兵事迹材料
2014/05/04 职场文书
教书育人演讲稿
2014/09/11 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
cf战队宣传语
2015/07/13 职场文书
创业计划书之废品回收
2019/09/26 职场文书
React配置子路由的实现
2021/06/03 Javascript
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python