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 相关文章推荐
js字符编码函数区别分析
Jun 05 Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
JavaScript获取表单内所有元素值的方法
Apr 02 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
Canvas 绘制粒子动画背景
Feb 15 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
Jun 20 Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 Javascript
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
js实现滑动滑块验证登录
Jul 24 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之第一天
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP教程 变量定义
2009/10/23 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
Python OS模块常用函数说明
2015/05/23 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Java如何格式化日期
2012/08/07 面试题
数据库基础的一些面试题
2012/02/25 面试题
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
医院实习介绍信
2014/01/12 职场文书
小学开学典礼主持词
2014/03/19 职场文书
学习普通话的体会
2014/11/07 职场文书