Layui 图片上传结合 Spring MVC 表单提交的实现
作者:清欢时间:2026-10-23 11:23:27浏览:560
本文介绍如何使用 Layui 实现前端图片拖拽上传,并通过 Spring MVC 后端接口接收文件。示例包含 HTML 结构、JS 配置及 Java 控制器代码,展示如何将图片保存至服务器并返回路径,同时兼容常规表单提交场景。
Layui 图片上传与 Spring MVC 集成示例
Layui 的文件上传功能应用广泛,是开发中常用的组件。此处记录相关代码,便于后续直接复用。
首先构建前端 HTML 结构。
<div class="layui-form-item">
<label class="layui-form-label">修改头像</label>
<div class="layui-input-inline uploadHeadImage">
<div class="layui-upload-drag" id="headImg">
<i class="layui-icon"></i>
<p>点击上传图片,或将图片拖拽到此处</p>
</div>
</div>
<div class="layui-input-inline">
<div class="layui-upload-list">
<img class="layui-upload-img headImage" src="http://t.cn/RCzsdCq" id="demo1">
<p id="demoText"></p>
</div>
</div>
</div>
接着编写前端 JavaScript 逻辑。
<script type="text/javascript">
layui.use(["jquery", "upload", "form", "layer", "element"], function () {
var $ = layui.$,
element = layui.element,
layer = layui.layer,
upload = layui.upload,
form = layui.form;
//拖拽上传
var uploadInst = upload.render({
elem: '#headImg'
, url: '/upload/headImg'
, size: 500
, before: function (obj) {
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
$('#demo1').attr('src', result); //图片链接(base64)
});
}
, done: function (res) {
//如果上传失败
if (res.code > 0) {
return layer.msg('上传失败');
}
//上传成功
//打印后台传回的地址: 把地址放入一个隐藏的input中, 和表单一起提交到后台, 此处略..
/* console.log(res.data.src);*/
window.parent.uploadHeadImage(res.data.src);
var demoText = $('#demoText');
demoText.html('<span style="color: #8f8f8f;">上传成功!!!</span>');
}
, error: function () {
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
element.init();
});
</script>
页面最终展示效果如下。



后端通过 Spring MVC 接收上传的文件数据。
/**
* 个人信息上传
* @return {Result}
*/
@RequestMapping(value = "/upload/headImg", method = {RequestMethod.POST})
@ResponseBody
public Object headImg(@RequestParam(value="file",required=false) MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {
if (SecurityUtils.getSubject().isAuthenticated() == false) {
return "redirect:/backEnd/login";
}
String prefix="";
String dateStr="";
//保存上传
OutputStream out = null;
InputStream fileInput=null;
try{
if(file!=null){
String originalName = file.getOriginalFilename();
prefix=originalName.substring(originalName.lastIndexOf(".")+1);
dateStr = format.format(new Date());
String filepath = request.getServletContext().getRealPath("/static") + uploadDir + dateStr + "." + prefix;
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"+uploadDir + dateStr + "." + prefix);
return map;
}
关于表单的其他请求,直接使用 Layui 的表单上传功能即可处理。此处省略简单部分的代码,具体可参考其他相关博客文章。
以上即为 Layui 图片上传结合 Spring MVC 表单提交的完整示例,供读者参考。
作者最新文章
JS转整数出现NaN怎么办?常见异常处理方案
2026-11-05 16:27:31
推荐几款免安装的在线JS压缩工具
2026-11-05 14:54:53
JS怎么使用JSON.stringify实现JSON格式化与缩进
2026-11-04 10:47:30
CodePen、JSFiddle 与 StackBlitz:主流 JS 在线编辑器对比
2026-11-03 21:07:49
JS字符串转数字后怎么正确判断是否为有效数值
2026-11-03 20:04:15
