layui实现form表单同时提交数据和文件的代码


Posted in Javascript onOctober 25, 2019

1.jsp页面

·html代码

<%--用户注册的弹出框--%>
<div id="userDiv" style="display: none;">
 <form class="layui-form" id="userForm" lay-filter="deptForm" enctype="mutipart/form-data">
  <input type="hidden" name="id">
  <div class="layui-form-item">
   <div class="layui-inline">
    <label class="layui-form-label" >用户名</label>
    <div class="layui-input-inline">
     <input type="text" name="name" placeholder="6~18位,请使用数字或字母" lay-verify="checkName|username|required" class="layui-input">
    </div>
   </div>
   <div class="layui-inline">
    <label class="layui-form-label">密码</label>
    <div class="layui-input-inline">
     <input type="password" id="password" name="password" lay-verify="required" class="layui-input">
    </div>
   </div>
   <div class="layui-inline">
    <label class="layui-form-label">确认密码</label>
    <div class="layui-input-inline">
     <input type="password" lay-verify="required|checkPwd" class="layui-input">
    </div>
   </div>
   <%--图片上传功能--%>
   <div>
    <button type="button" name="url" class="layui-btn" id="test1">上传头像</button>
     <img class="layui-upload-img" id="photo" width="100" height="100">
     <p id="demoText"></p>
   </div>
   <hr/>
   <div class="layui-form-item" id="btn">
    <div class="layui-input-block">
     <button id="get" lay-filter="reg" class="layui-btn btn-submit" type="button" lay-submit="">立即注册</button>
     <button type="reset" class="layui-btn layui-btn-primary">重置</button>
    </div>
   </div>
  </div>
 </form>
</div>

·js代码

//上传头像的方法
  var uploadInst = upload.render({
   elem: '#test1'  /*根据绑定id,打开本地图片*/
   ,url: '/reg' /*上传后台接受接口*/
   ,auto: false  /*true为选中图片直接提交,false为不提交根据bindAction属性上的id提交*/
   ,bindAction: '#get'
   ,drag:true
   ,auto: false
   ,choose:function(obj){
    //预读本地文件示例,不支持ie8
    obj.preview(function(index, file, result){
     $('#photo').attr('src', result); //图片链接(base64)
    });
   }
   ,done: function(res){
    //如果上传失败
    if(res.code > 0){
     return layer.msg('上传失败');
    }
    //上传成功
   }
   ,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();
    });
   }
  });
 //提交表单的方法
 form.on('submit(reg)', function (data) {
   var fd = new FormData();
   var formData = new FormData($( "#userForm" )[0]);
   $.ajax({
    cache : true,
    type : "post",
    url : "/reg",
    async : false,
    data : formData, // 你的formid
    contentType: false, //jax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件
    processData: false, //当设置为true的时候,jquery ajax 提交的时候不会序列化 data,而是直接使用data
    error : function(request) {
     layer.alert('操作失败', {
      icon: 2,
      title:"提示"
     });
    },
    success : function(ret) {
     if (ret.success) {
      layer.alert('注册成功', {
       icon: 2,
       title:"提示"
      });
      layer.closeAll();
      window.location.href="/login" rel="external nofollow" ;
     } else {
      layer.alert(ret.msg, {
       icon: 2,
       title:"提示"
      });
     }
    }
    })
  });

2.后台处理

@ResponseBody
 @RequestMapping ("/reg")
 public JsonResult save(MultipartFile file, User user, HttpServletRequest request){
  try {
   String path = request.getSession().getServletContext().getRealPath("upload");
   String pathPhoto = "/upload";
   if(!file.isEmpty()){
    String name = file.getOriginalFilename();//获取接受到的图片名称
    String newFileName = UUID.randomUUID().toString().substring(0,5)+"."+ FilenameUtils.getExtension(name);
    File fi = new File(path,newFileName);  //将path路径与图片名称联系在一起
    if(!fi.getParentFile().exists()){ //判断是否存在path路径下的文件夹
     fi.getParentFile().mkdirs();  //不存在创建path路径下的文件夹
    }
    file.transferTo(fi);      //上传图片
    user.setImgurl(pathPhoto+"/"+newFileName); //为保存图片路径
   }
   if(!StringUtil.isEmpty(user.getName()) && !StringUtil.isEmpty(user.getPassword())){
    userService.save(user);
   }
  } catch (Exception e) {
   e.printStackTrace();
   return new JsonResult(false,e.getMessage());
  }
  return new JsonResult();
 }

以上这篇layui实现form表单同时提交数据和文件的代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript QueryString解析类代码
Jan 17 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
JavaScript实现图像模糊化的方法实例
Jan 15 Javascript
js监听input输入框值的实时变化实例
Jan 26 Javascript
JavaScript函数基础详解
Feb 03 Javascript
微信小程序开发图片拖拽实例详解
May 05 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
Vue父组件向子组件传值以及data和props的区别详解
Mar 02 Javascript
vue实现弹幕功能
Oct 25 #Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 #Javascript
使用layui前端框架弹出form表单以及提交的示例
Oct 25 #Javascript
layui form表单提交后实现自动刷新
Oct 25 #Javascript
jquery实现购物车基本功能
Oct 25 #jQuery
vue中@change兼容问题详解
Oct 25 #Javascript
vue下的@change事件的实现
Oct 25 #Javascript
You might like
解析php中die(),exit(),return的区别
2013/06/20 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
超清晰的document对象详解
2007/02/27 Javascript
ArrayList类(增强版)
2007/04/04 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python中Lambda表达式详解
2019/11/20 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
什么是Python中的匿名函数
2020/06/02 Python
Python模块常用四种安装方式
2020/10/20 Python
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
道路交通安全实施方案
2014/03/12 职场文书
大学生村官演讲稿
2014/04/25 职场文书
群教班子对照检查材料
2014/08/26 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
2015年派出所工作总结
2015/04/24 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
外出培训学习心得体会
2016/01/18 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
MySQL事务的隔离级别详情
2022/07/15 MySQL