思路:上传图片接口后返回路径给页面,然后用一个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; }
