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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
jquery each()源代码
Feb 14 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
Sep 18 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
Node 升级到最新稳定版的方法分享
May 17 Javascript
JavaScrip数组去重操作实例小结
Jun 20 Javascript
微信小程序框架的页面布局代码
Aug 17 Javascript
vue实现移动端拖动排序
Aug 21 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
Smarty变量调节器失效的解决办法
2014/08/20 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
JS Array对象入门分析
2008/10/30 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
捷克玩具商店:Bambule
2019/02/23 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
八年级历史教学反思
2014/01/10 职场文书
自主实习接收函
2014/01/13 职场文书
销售主管竞聘书
2014/03/31 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
Redis实战高并发之扣减库存项目
2022/04/14 Redis