layui實(shí)現(xiàn)form表單同時(shí)提交數(shù)據(jù)和文件的代碼
1.jsp頁(yè)面
·html代碼
<%--用戶注冊(cè)的彈出框--%> <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位,請(qǐng)使用數(shù)字或字母" 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">確認(rèn)密碼</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="">立即注冊(cè)</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </div> </form> </div>
·js代碼
//上傳頭像的方法 var uploadInst = upload.render({ elem: '#test1' /*根據(jù)綁定id,打開本地圖片*/ ,url: '/reg' /*上傳后臺(tái)接受接口*/ ,auto: false /*true為選中圖片直接提交,false為不提交根據(jù)bindAction屬性上的id提交*/ ,bindAction: '#get' ,drag:true ,auto: false ,choose:function(obj){ //預(yù)讀本地文件示例,不支持ie8 obj.preview(function(index, file, result){ $('#photo').attr('src', result); //圖片鏈接(base64) }); } ,done: function(res){ //如果上傳失敗 if(res.code > 0){ return layer.msg('上傳失敗'); } //上傳成功 } ,error: function(){ //演示失敗狀態(tài),并實(shí)現(xiàn)重傳 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 設(shè)置為 false 是為了避免 JQuery 對(duì)其操作,從而失去分界符,而使服務(wù)器不能正常解析文件 processData: false, //當(dāng)設(shè)置為true的時(shí)候,jquery ajax 提交的時(shí)候不會(huì)序列化 data,而是直接使用data error : function(request) { layer.alert('操作失敗', { icon: 2, title:"提示" }); }, success : function(ret) { if (ret.success) { layer.alert('注冊(cè)成功', { icon: 2, title:"提示" }); layer.closeAll(); window.location.href="/login" rel="external nofollow" ; } else { layer.alert(ret.msg, { icon: 2, title:"提示" }); } } }) });
2.后臺(tái)處理
@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路徑與圖片名稱聯(lián)系在一起 if(!fi.getParentFile().exists()){ //判斷是否存在path路徑下的文件夾 fi.getParentFile().mkdirs(); //不存在創(chuàng)建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實(shí)現(xiàn)form表單同時(shí)提交數(shù)據(jù)和文件的代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript實(shí)現(xiàn)的樣式表(CSS) 格式整理與壓縮
javascript實(shí)現(xiàn)的樣式表(CSS) 格式整理與壓縮,可以分為多行與單行,非常不錯(cuò)。2010-05-05JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)JSON對(duì)象的4種方法代碼
這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)JSON對(duì)象的4種方法,使用ajax的開發(fā)項(xiàng)目過程中,經(jīng)常需要將json格式的字符串返回到前端,前端解析成js對(duì)象(JSON),需要的朋友可以參考下2023-10-10詳解JavaScript面向?qū)ο髮?shí)戰(zhàn)之封裝拖拽對(duì)象
本文主要介紹了JavaScript如何用面向?qū)ο蟮姆绞椒庋b拖拽對(duì)象,通過3種方式來實(shí)現(xiàn),幫助讀者更好的理解其原理2021-06-06JavaScript詳解使用Promise處理回調(diào)地獄的兩種方法
這篇文章主要介紹了JavaScript詳解使用Promise處理回調(diào)地獄的兩種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-11-11js實(shí)現(xiàn)加載頁(yè)面就自動(dòng)觸發(fā)超鏈接的示例
下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)加載頁(yè)面就自動(dòng)觸發(fā)超鏈接的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08