springMVC + easyui + $.ajaxFileUpload實(shí)現(xiàn)文件上傳注意事項(xiàng)
在使用easyUI做前端樣式展示時(shí),遇到了文件上傳的問(wèn)題,而且是在彈出層中提交表單,想做到不刷新頁(yè)面,所以選擇了使用ajaxFileUpload插件。提交表單時(shí)一直發(fā)現(xiàn)后臺(tái)接收不到文件,后檢查發(fā)現(xiàn),原來(lái)是文件的id不對(duì)。
文件上傳框我們定義如下:
<input class="easyui-filebox" id="image" name="image" data-options="label:'產(chǎn)品圖片:',buttonText:'瀏覽',prompt:'僅支持jpg、gif、png等格式的圖片',required:true">
提交的方式如下:
$.ajaxFileUpload({
type:'POST',
url : '${pageContext.request.contextPath}/product/saveProduct',
secureuri : false,
data : queryFormParam('#formId'),//需要傳遞的數(shù)據(jù) json格式
fileElementId :'image',
dataType : 'json',
success : function(data) { //上傳成功后的回調(diào)。
if(data.status){
$.messager.alert("提示","保存成功");
}else {
$.messager.alert("提示","保存失敗");
}
},
error : function(data) {
$.messager.alert("提示","異常,請(qǐng)稍后再試!");
}
});
檢查后發(fā)現(xiàn),因easyui-filebox樣式使用時(shí),easyUI的js會(huì)為其創(chuàng)建一個(gè)type="file"的input,并且id也是easyUI定義的,自定義的id無(wú)效,可在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;
};
表單中可以定義多個(gè)filebox,并且filebox的id為filebox_file_id_+序號(hào),如果只有一個(gè),那就是filebox_file_id_1,因我這邊只有一個(gè),然后將ajaxFileUpload提交時(shí)的fileElementId 改成‘filebox_file_id_1',后臺(tái)就接收到image值了。
這個(gè)是看源碼知道的,如果不看源碼,其實(shí)可以直接用jQuery的方式獲得id,如下:
var image_id= $("input[name='image']").attr("id");
因image名字在我的表單中是唯一的,所以通過(guò)名字來(lái)獲得id,然后將id填入ajaxFileUpload的fileElementId 中即可達(dá)到同樣的效果。
springMVC后臺(tái)采用的是CommonsMultipartFile來(lái)接收文件,如下,得到路徑后,用image.transferTo(saveDir);保存即可。
@RequestParam("image") CommonsMultipartFile image
以上所述是小編給大家介紹的springMVC + easyui + $.ajaxFileUpload實(shí)現(xiàn)文件上傳注意事項(xiàng),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- SpringMVC文件上傳 多文件上傳實(shí)例
- SpringMVC 文件上傳配置,多文件上傳,使用的MultipartFile的實(shí)例
- jquery.form.js框架實(shí)現(xiàn)文件上傳功能案例解析(springmvc)
- SpringMvc MultipartFile實(shí)現(xiàn)圖片文件上傳示例
- 使用jQuery.form.js/springmvc框架實(shí)現(xiàn)文件上傳功能
- springMVC實(shí)現(xiàn)前臺(tái)帶進(jìn)度條文件上傳的示例代碼
- SpringMVC使用MultipartFile實(shí)現(xiàn)文件上傳
- MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能
- SpringMVC文件上傳的配置實(shí)例詳解
- springmvc實(shí)現(xiàn)文件上傳功能
相關(guān)文章
JavaScript isArray()函數(shù)判斷對(duì)象類型的種種方法
我們知道,JavaScript中檢測(cè)對(duì)象類型的運(yùn)算符有:typeof、instanceof,還有對(duì)象的constructor屬性2010-10-10
js數(shù)組常見(jiàn)操作及數(shù)組與字符串相互轉(zhuǎn)化實(shí)例詳解
這篇文章主要介紹了js數(shù)組常見(jiàn)操作及數(shù)組與字符串相互轉(zhuǎn)化方法,以實(shí)例形式較為詳細(xì)的分析并總結(jié)了JavaScript數(shù)組的常見(jiàn)使用技巧與轉(zhuǎn)化方法,需要的朋友可以參考下2015-11-11
onmouseover事件和onmouseout事件全面理解
最近兩天在溫習(xí)onmouseover事件和onmouseout事件,其實(shí)里面有很多深?yuàn)W的知識(shí),接下來(lái)小編給大家?guī)?lái)了onmouseover事件和onmouseout事件全面了解,感興趣的朋友一起看下2016-08-08
前端接口報(bào)錯(cuò)Required?request?body?is?missing解決辦法
這篇文章主要給大家介紹了關(guān)于前端接口報(bào)錯(cuò)Required?request?body?is?missing的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
echarts柱狀圖坐標(biāo)軸內(nèi)容顯示不全的兩種解決辦法
本文主要介紹了echarts柱狀圖坐標(biāo)軸內(nèi)容顯示不全的兩種解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

