上传图片立即显示
2018-06-24 02:03:57来源:未知 阅读 ()
之前一个已经工作的同学问我上传图片立即显示怎么实现,这个问题虽然不难,但我还是要去打开电脑找到项目,点开一个个目录;这时候博客的作用就显露出来了。。
话不多说,进入正题:
先看看效果
只需要在js中添加如下代码就可以实现了
$(function(){ $("#clickHeadImage").click(function(){ $(this).find('span').removeClass('ui-state-hover'); //file绑定click,onchange事件,单击事件打开file,选择后触发onchange,再调用单击事件触发sumit document.getElementById("userImg").click(); document.getElementById("userImg").onchange=function(evt){ // document.getElementById("submit").click(); var image = ''; var files = evt.target.files; var file=files[0]; //function selImage(file){ var reader = new FileReader(); reader.onload = function(evt){ document.getElementById('img').src = evt.target.result; image = evt.target.result; var value = $('#userImg').val(); value = value.split("\\")[2]; image = JSON.stringify(image); // alert(image); $.ajax({ type:'POST', url: 'user/uploadImg', data: {base64: image,fileName:value}, async: true, dataType: 'text', success: function(data){ if(data==success){ alert('上传成功'); }else{ alert('上传失败'); } }, error: function(err){ //alert(err); alert('网络故障'); } }); }; reader.readAsDataURL(file); // } } }); $("#clickHeadImage").hover(function(){ $(this).removeClass('ui-state-hover'); });
});
这段代码主要是读取你选中的图片文件,先生成图片,然后再把生成的文件以base64方式传递给后台,具体流程可以按F12调试一下就知道了
圆形图片框div:
<div id="clickHeadImage" class="head-img" title="点击更换头像"> <form id="form" name="form" method="post" action="user/" enctype="multipart/from-data" > <img id="img" src="${user.userimg }" alt="" style="width:88px;height:88px;z-index:0;"/> <!-- 让头像框为圆形,注释为方形 class="ui-fileupload" 隐藏文件框--> <i class="headframe" style="z-index:0;"></i> <input type="file" class="ui-fileupload" id="userImg" name="userimg" style="z-index:0;display:none;"/> </form> </div>
头像css代码:
.personal-main{ float:left; width:940px; height:auto; margin-top:10px; color:#848484} .pmain-profile{ width:940px; height:340px; background-color:#fff;} .pmain-profile .pmain-welcome{ height:40px; line-height:40px;padding:0 30px; border-bottom:1px solid #f2f2f2;} .pmain-user{ width:880px; height:114px; padding:15px 30px;border-bottom:1px solid #f2f2f2;} .pmain-user .user-head{ float:left; width:133px; height:114px;} .pmain-user .user-head .head-img{ float:left; width:88px; height:88px; position:relative; cursor:pointer;} .pmain-user .user-head .head-img img{ position:absolute; top:0; left:0; z-index:2;} .pmain-user .user-head .head-img .headframe{ position:absolute; left:0; top:0; background:url(../image/grzx.png) 0 -280px; width:88px; height:88px; z-index:5;}
主要是最后一句:background:url()内就是加入背景图片的路径,最好选小一点的图片,然后改一下后面的width、height
后台保存代码:
//头像上传 @SystemControllerLog(description="头像上传") @RequestMapping("uploadImg") @ResponseBody public String uploadImg(User user,String base64,String fileName,HttpServletRequest request,HttpSession session) { // 去掉base64数据头部data:image/png;base64,和尾部的” " “ String[] ww= base64.split(","); base64 = ww[1]; String[] aa = base64.split("\""); base64 = aa[0]; try { User u=(User) session.getAttribute("user"); //图片保存到本地 //String url="upload/userImg/"+fileName; String url="F:\\tomcat\\apache-tomcat-9.0.0.M22\\webapps\\update\\"+fileName; //String path=request.getSession().getServletContext().getRealPath(url); Base64File file = new Base64File(); file.decoderBase64File(base64, url); //将图片插入数据库 user.setId(u.getId()); user.setUserimg("/update/"+fileName); userService.update(user); //更新之后,把session移除再添加,前台el表达式才能获取更新数据 u.setUserimg(user.getUserimg()); session.removeAttribute("user"); session.setAttribute("user", u); // 成功标识 return "success"; } catch (Exception e) { return "nosuccess"; } }
特别要注意的是:如果上传的是png格式的图片,虽然可以立即显示,但在后台有可能会出现base为空的情况,可能是和图片大小有关?不过最好不要选png图片
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:es6字符串方法
- ?javascript如何控制上传文件的大小 2020-03-19
- 微信小程序开发图片拖拽实例详解 2020-03-16
- javascript如何获取图片颜色 2020-03-08
- 鼠标放在图片上显示大图的JS代码 2020-02-20
- vue-cli中打包图片路径错误的解决方法 2020-01-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash