图片上传、预览 存到本地
来源:互联网 发布:数字网络用语有哪些 编辑:程序博客网 时间:2024/05/17 22:17
先来前端页面代码
<!-- 账号设置 --><div id="center_right_zhsz" hidden="hidden"><div style="font-family: MicrosoftYaHei;font-size: 14px;"><div style="width: 64px;height: 21px;color: #4d4d4d;font-size: 16px;margin-left: 34px;margin-top: 40px;">基本资料</div><div style="margin-top: 50px;"><div style="width: 28px;height: 19px;color: #7f7f7f;margin-left: 282px;float: left;margin-right: 40px;">头像</div><div style="font-size: 12px;color: #c3c3c3;"><img th:src="@{/static/images/icons/icon-ts.png}" style="margin-bottom: -2px;margin-right: 10px;">仅支持GIF/JPG/PNG格式、大小不超过2M</div></div><div style="height: 100px;margin-left:410px;width: 120px; "><img id="zhsztxxgq" th:src="@{/static/images/icons/touxiang.png}" style="width: 96px;height: 96px;border-radius: 50px;margin-top: 30px;z-index: -1;"><img id="zhsztxxgz" onclick="sctx()" hidden="hidden" th:src="@{/static/images/icons/sctx.png}" style="width: 96px;height: 96px;border-radius: 50px;cursor:pointer;z-index: 0;margin-top: -100px;margin-bottom: 20px;"><input hidden="hidden" id="xtxtp" type="file" accept="image/gif, image/jpg, image/png"/><input id="photoCover" class="form-control" readonly type="text" hidden="hidden"><input id="zhszid" hidden="hidden" value="60"></div><div style="margin-top: 50px;"><div style="margin-left: 282px;margin-right: 100px;float: left;color: #7f7f7f;font-size: 14px;">昵称</div><div id="zhszncdiv" hidden="hidden"><input id="zhsznc2" style="width: 128px;color: #4d4d4d;"/></div><div id="zhsznc" style="color: #4d4d4d;font-size: 14px;">yxzj1991</div></div></div><img id="zhsztxan" onclick="htx()" th:src="@{/static/images/icons/icon-xg.png}" style="position: absolute;top: 540px;left: 940px;cursor: pointer;"><img id="zhszncan" onclick="hnc()" th:src="@{/static/images/icons/icon-xg.png}" style="position: absolute;;top: 585px;left: 940px;cursor: pointer;"><img id="zhszmman" onclick="hmm()" th:src="@{/static/images/icons/icon-xg.png}" style="position: absolute;;top: 925px;left: 940px;cursor: pointer;"><div id="zhsz_tx" hidden="hidden"><img onclick="htxqx()" th:src="@{/static/images/icons/icon-qx.png}" style="position: absolute;;top: 540px;left: 940px;cursor: pointer;"><img onclick="htxqr()" th:src="@{/static/images/icons/icon-bc.png}" style="position: absolute;;top: 540px;left: 912px;cursor: pointer;"></div><div id="zhsz_nc" hidden="hidden"><img onclick="hncqx()" th:src="@{/static/images/icons/icon-qx.png}" style="position: absolute;;top: 585px;left: 940px;cursor: pointer;"><img onclick="hncqr()" th:src="@{/static/images/icons/icon-bc.png}" style="position: absolute;;top: 585px;left: 912px;cursor: pointer;"></div><div id="zhsz_mm" hidden="hidden"><img onclick="hmmqx()" th:src="@{/static/images/icons/icon-qx.png}" style="position: absolute;;top: 925px;left: 940px;cursor: pointer;"><img onclick="hmmqr()" th:src="@{/static/images/icons/icon-bc.png}" style="position: absolute;;top: 925px;left: 912px;cursor: pointer;"></div><div><div style="width: 64px;height: 21px;color: #4d4d4d;font-size: 16px;margin-left: 34px;margin-top: 98px;">账号安全</div><div style="margin-top: 50px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">仓库名称</div><div id="zhszmysmc" style="color: #4d4d4d;font-size: 14px;">石家庄海森化工有限公司</div></div><div style="margin-top: 30px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">身份权限</div><div style="color: #4d4d4d;font-size: 14px;">操作员</div></div><div style="margin-top: 30px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">登录账号</div><div id="zhszzh" style="color: #4d4d4d;font-size: 14px;">1321321322</div></div><div style="margin-top: 30px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">登录密码</div><div id="zhszmm2" style="color: #4d4d4d;font-size: 14px;">••••••••</div><input id="zhszmm" hidden="hidden" value="zhang012345"/></div><div id="zhszmmxgdiv" hidden="hidden"><div style="margin-top: 30px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">新的密码</div><div style="color: #4d4d4d;font-size: 14px;"><input id="zhszxmm" style="width: 128px;"/></div><div style="margin-top: 30px;"><div style="margin-left: 282px;margin-right: 72px;color: #7f7f7f;float: left;font-size: 14px;">确认密码</div><div style="color: #4d4d4d;font-size: 14px;"><input id="zhszxmm2" style="width: 128px;"/></div><span id="mmbyz" hidden="hidden" style="color: #fe4a48;font-size: 12px;margin-left:412px;">两次密码填写不一致</span><span id="mmxt" hidden="hidden" style="color: #fe4a48;font-size: 12px;margin-left:412px;">与旧密码相同,请更改</span></div></div></div></div><div style="margin-top: 50px;"><button onclick="zhsztc()" style="width: 128px;height: 40px;background-color: #74bdff;border-radius: 5px;color: #ffffff;font-size: 16px;border: none;margin-left: 393px;">退出登录</button></div></div>
这是样子
下面的是图片点击事件(点击图片触发 那个隐藏的input的点击事件)
/* 上传头像 */function sctx(){$("#xtxtp").click();} $(function(){ $("#xtxtp").change(function(e){ var file = e.target.files[0]||e.dataTransfer.files[0]; //在此限制图片的大小 var imgSize = file.size; console.log(imgSize); //35160 计算机存储数据最为常用的单位是字节(B) //在此处我们限制图片大小为2M if(imgSize>2*1024*1024){ alert('上传的图片的大于2M,请重新选择'); $(this).val('') return false; } $('#photoCover').val(document.getElementById("xtxtp").files[0].name); if(file){ var reader = new FileReader(); reader.onload=function(){ $("#zhsztxxgz").attr("src", this.result); // $("#zhsztxxgq").hide(); } reader.readAsDataURL(file); } }); })到这里只是替换页面上的图片,相当于预览功能。还没投提交到后台
/* 换头像确认 */function htxqr(){if($("#zhsztxxgz")[0].src.split("/")[6]=="sctx.png"){$("#zhsztxan").show();$("#zhsztxxgq").show();$("#zhsztxxgz").hide();$("#zhsz_tx").hide();}else{$("#zhsztxan").show();$("#zhsztxxgq").show();$("#zhsztxxgz").hide();$("#zhsz_tx").hide();$("#zhsztxxgq").attr("src",$("#zhsztxxgz")[0].src);$("#zhsztxxgz").attr("src","/static/images/icons/sctx.png");var file = document.getElementById("xtxtp").files[0];var form = new FormData();form.append("file", file);var xhr = null; //得到xhr对象 if(XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("post", "warehouseauditor/htx", true);//设置提交方式,url,异步提交 xhr.onload = function () { var data = xhr.responseText; //得到返回值 } xhr.send(form);}}可以看到用了 formData,以前提交图片都是form表单直接提交,不能局部刷新页面,用formData 你可以局部刷新,form表单度都可以不写(貌似是html5才有的)
form.append("file", file);相当于key value 你有多个参数是也可以一起加的
下面是controller层
/** * 换头像 * @param file * @param id * @param request * @param response */@RequestMapping("htx")public void htx(@RequestParam("file")MultipartFile file,HttpServletRequest request,HttpServletResponse response){ try { PortalUser user =(PortalUser) request.getSession().getAttribute("user"); if(user!=null){ PortalUser entity = portalUserService.getEntity(user.getId()); String fileName=file.getOriginalFilename(); //获取扩展 String extName = fileName.substring(fileName.lastIndexOf("."));//.jpg String nname = fileName.substring(0,fileName.lastIndexOf("."));//w文件名 //UUID String uuid = UUID.randomUUID().toString().replace("-", ""); //新名称 String newName = nname+"-"+uuid+extName; //获取输出流 OutputStream os=new FileOutputStream("D:/photo2/"+newName); //获取输入流 CommonsMultipartFile 中可以直接得到文件的流 InputStream is=file.getInputStream(); int temp; //一个一个字节的读取并写入 while((temp=is.read())!=(-1)) { os.write(temp); } os.flush(); os.close(); is.close(); entity.setPhotoUrl("D:/photo2/"+newName); portalUserService.save(entity); RenderUtil.renderSuccess("修改成功", response); } } catch (IOException e) { e.printStackTrace(); } }
加了个uuid防止重名 不过我是先建好这个photo2这个文件夹的,不然你要加个判断
阅读全文
0 0
- 图片上传、预览 存到本地
- 图片上传,本地预览
- 上传图片本地预览
- 上传图片本地预览
- 上传图片本地预览
- 上传图片本地预览
- 图片上传本地预览
- 图片上传本地预览
- 图片存到本地
- 预览上传的本地图片
- 本地、远程图片上传预览
- 本地上传图片并预览
- ie8本地图片上传预览
- jsp预览本地上传图片
- jsp预览本地上传图片
- Js 图片上传本地预览
- 图片上传本地预览插件
- 图片上传本地预览插件
- 移动端自适应封装的通用媒体查询代码
- C/C++中const使用详解
- DragChartPanel 可拖拽曲线的应用
- Android 序列化之Serializable和Parcelable
- Spring中@transactional原理
- 图片上传、预览 存到本地
- 基于Springmvc实现简单的一次选中多个文件上传
- [BZOJ4570]-[Scoi2016]妖怪-凸包
- org.apache.solr.common.SolrException undefined field text
- 6D-java-姜/sr
- Web开发发布环境:tomcat、Eclipse
- mybatis代码自动生成工具(maven方式)
- 给织梦的dede:channel增加可选择范围的属性
- Android Studio maven-metadata.xml 卡着不动原因和解决方法