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 相关文章推荐
jQuery 使用手册(三)
Sep 23 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
Dec 28 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
快速搭建React的环境步骤详解
Nov 06 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 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
实用函数9
2007/11/08 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
python笔记:mysql、redis操作方法
2017/06/28 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python tqdm库的使用
2020/11/30 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
四风存在的原因分析
2014/02/11 职场文书
奶茶店创业计划书
2014/08/14 职场文书
《观潮》教学反思
2016/02/17 职场文书
python双向链表实例详解
2022/05/25 Python