您好,登錄后才能下訂單哦!
這篇文章主要介紹springMVC + easyui + $.ajaxFileUpload實現文件上傳注意事項有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
在使用easyUI做前端樣式展示時,遇到了文件上傳的問題,而且是在彈出層中提交表單,想做到不刷新頁面,所以選擇了使用ajaxFileUpload插件。提交表單時一直發現后臺接收不到文件,后檢查發現,原來是文件的id不對。
文件上傳框我們定義如下:
<input class="easyui-filebox" id="image" name="image" data-options="label:'產品圖片:',buttonText:'瀏覽',prompt:'僅支持jpg、gif、png等格式的圖片',required:true">
提交的方式如下:
$.ajaxFileUpload({ type:'POST', url : '${pageContext.request.contextPath}/product/saveProduct', secureuri : false, data : queryFormParam('#formId'),//需要傳遞的數據 json格式 fileElementId :'image', dataType : 'json', success : function(data) { //上傳成功后的回調。 if(data.status){ $.messager.alert("提示","保存成功"); }else { $.messager.alert("提示","保存失敗"); } }, error : function(data) { $.messager.alert("提示","異常,請稍后再試!"); } });
檢查后發現,因easyui-filebox樣式使用時,easyUI的js會為其創建一個type="file"的input,并且id也是easyUI定義的,自定義的id無效,可在easyUI的jquery.easyui.min.js中查看代碼如下:
(function($){ var _551=0; function _552(_553){ var _554=$.data(_553,"filebox"); var opts=_554.options; opts.fileboxId="filebox_file_id_"+(++_551); $(_553).addClass("filebox-f").textbox(opts); $(_553).textbox("textbox").attr("readonly","readonly"); _554.filebox=$(_553).next().addClass("filebox"); var file=_555(_553); var btn=$(_553).filebox("button"); if(btn.length){ $("<label class=\"filebox-label\" for=\""+opts.fileboxId+"\"></label>").appendTo(btn); if(btn.linkbutton("options").disabled){ file.attr("disabled","disabled"); }else{ file.removeAttr("disabled"); } } }; function _555(_556){ var _557=$.data(_556,"filebox"); var opts=_557.options; _557.filebox.find(".textbox-value").remove(); opts.oldValue=""; var file=$("<input type=\"file\" class=\"textbox-value\">").appendTo(_557.filebox); file.attr("id",opts.fileboxId).attr("name",$(_556).attr("textboxName")||""); file.attr("accept",opts.accept); if(opts.multiple){ file.attr("multiple","multiple"); } file.change(function(){ var _558=this.value; if(this.files){ _558=$.map(this.files,function(file){ return file.name; }).join(opts.separator); } $(_556).filebox("setText",_558); opts.onChange.call(_556,_558,opts.oldValue); opts.oldValue=_558; }); return file; };
表單中可以定義多個filebox,并且filebox的id為filebox_file_id_+序號,如果只有一個,那就是filebox_file_id_1,因我這邊只有一個,然后將ajaxFileUpload提交時的fileElementId 改成‘filebox_file_id_1',后臺就接收到image值了。
這個是看源碼知道的,如果不看源碼,其實可以直接用jQuery的方式獲得id,如下:
var image_id= $("input[name='image']").attr("id");
因image名字在我的表單中是唯一的,所以通過名字來獲得id,然后將id填入ajaxFileUpload的fileElementId 中即可達到同樣的效果。
springMVC后臺采用的是CommonsMultipartFile來接收文件,如下,得到路徑后,用image.transferTo(saveDir);保存即可。
@RequestParam("image") CommonsMultipartFile image
以上是“springMVC + easyui + $.ajaxFileUpload實現文件上傳注意事項有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。