思路:上传图片接口后返回路径给页面,然后用一个input接收路径,再通过form表单提交给后端进行保存,编辑类似
1.添加界面html
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <title>layui</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" th:href="@{/lib/layui-v2.6.3/css/layui.css}" media="all"> <link rel="stylesheet" th:href="@{/css/public.css}" media="all"> <style> body { background-color: #ffffff; } </style> </head> <body> <!--上传图片--> <div class="layui-upload "> <div class="layui-upload-list"> <!--预览图片--> <img style="height: 100px; width: 100px;" class="layui-upload-img" id="imgView"> <button type="button" class="layui-btn" id="photo">上传图片</button> <!--提示信息--> <p id="demoText"></p> </div> </div> <div class="layui-form layuimini-form"> <div style="display: none" class="layui-form-item"> <label class="layui-form-label required">图片</label> <div class="layui-input-block"> <input type="text" id="hotelimg" name="hotelimg" value="" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label required">酒店名称</label> <div class="layui-input-block"> <input type="text" name="name" lay-verify="required" lay-reqtext="名称不能为空" placeholder="请输入名称" value="" class="layui-input"> </div> </div> <!--<div class="layui-form-item">--> <!--<label class="layui-form-label required">性别</label>--> <!--<div class="layui-input-block">--> <!--<input type="radio" name="sex" value="男" title="男" checked="">--> <!--<input type="radio" name="sex" value="女" title="女">--> <!--</div>--> <!--</div>--> <div class="layui-form-item"> <label class="layui-form-label required">开始时间</label> <div class="layui-input-block"> <input type="text" id="createTime" name="createTime" placeholder="请输入开始时间" value="" class="layui-input" lay-verify="required" lay-reqtext="开始时间不能为空"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label required">结束时间</label> <div class="layui-input-block"> <input type="text" id="endTime" name="endTime" placeholder="请输入结束时间" value="" class="layui-input" lay-verify="required" lay-reqtext="结束时间不能为空"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label required">手机</label> <div class="layui-input-block"> <input type="number" name="phone" lay-verify="required" lay-reqtext="手机不能为空" placeholder="请输入手机" value="" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">价格</label> <div class="layui-input-block"> <input type="text" name="price" placeholder="请输入价格" value="" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">地址</label> <div class="layui-input-block"> <input type="text" name="address" placeholder="请输入地址" value="" class="layui-input"> </div> </div> <div class="layui-form-item layui-form-text"> <label class="layui-form-label">描述</label> <div class="layui-input-block"> <textarea name="describes" class="layui-textarea" placeholder="请输入描述信息"></textarea> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button> </div> </div> </div> <script th:src="@{/lib/layui-v2.6.3/layui.js}" charset="utf-8"></script> <script> layui.use(['laydate','upload','jquery','form'], function () { var form = layui.form, layer = layui.layer, $ = layui.$; upload=layui.upload, laydate = layui.laydate; //图片上传 var uploadInst=upload.render({ elem: '#photo', url:'/hotel/uploadPhoto', before: function (obj) { obj.preview(function (index,file,result) { $('#imgView').attr('src',result);//图片链接base64 }); }, done:function (res) {//上传后的回调函数 if (res) { console.log(res.data.src) $('#hotelimg').val(res.data.src); return layer.msg('上传成功'); } }, error:function () { //演示失败状态,并实现重传 var demoText=$('#demoText'); demoText.html('<span style="color:#FF5722;">上传失败</span><a class="layui-btn layui-btn-xs demo-reload">重试</a> ') demoText.find('.demo-reload').on('click',function () { uploadInst.upload(); }) } }) //时间选择 //开始时间 laydate.render({ elem: '#createTime', //指定元素 type: 'datetime' }); //结束时间 laydate.render({ elem: '#endTime', //指定元素 type: 'datetime' }); //添加没有图片则默认添加一张图片 var img=$('#hotelimg').val(); if (img == "" || img == null) { $('#hotelimg').val("../static/images/无图.jpg") } //监听提交 form.on('submit(saveBtn)', function (data) { $.ajax({ url: "/hotel/hotelAdd", method: "post", dataType: "json", data: data.field, success :function (res) { if (res.status == "0") { var index= layer.alert("添加成功",{},function () { //关闭弹出层 layer.close(index); //关闭自身的iframe var iframeIndex = parent.layer.getFrameIndex(window.name); parent.layer.close(iframeIndex); }); }else if (res.status == "1") { layer.alert("添加失败"); } } }) }); }); </script> </body> </html>
2.后端
/** * 图片上传 * @param file * @param request * @param response * @return */ @RequestMapping(value = "/uploadPhoto",method = RequestMethod.POST) @ResponseBody public Object uploadPhoto(@RequestParam(value = "file",required = false)MultipartFile file, HttpServletRequest request, HttpServletResponse response){ String prefix=""; String dateStr=""; String originalName=""; //保存上传 OutputStream out = null; InputStream fileInput=null; try{ if(file!=null){ originalName = file.getOriginalFilename(); prefix=originalName.substring(originalName.lastIndexOf(".")+1); // dateStr = format.format(new Date()); // String filepath = request.getServletContext().getRealPath("/static") + dateStr + "." + prefix; String filepath = "E:\\benke\\lx\\travel\\src\\main\\resources\\static\\images\\hotel\\" + originalName; //E:\benke\lx\travel\src\main\resources\static\images\hotel\captcha.jpg filepath = filepath.replace("\\", "/"); File files=new File(filepath); //打印查看上传路径 System.out.println(filepath); if(!files.getParentFile().exists()){ files.getParentFile().mkdirs(); } file.transferTo(files); } }catch (Exception e){ }finally{ try { if(out!=null){ out.close(); } if(fileInput!=null){ fileInput.close(); } } catch (IOException e) { } } Map<String,Object> map2=new HashMap<>(); Map<String,Object> map=new HashMap<>(); map.put("code",0); map.put("msg",""); map.put("data",map2); map2.put("src","../static/images/hotel/"+ originalName); return map; }