springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项


Posted in Javascript onApril 23, 2017

在使用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实现文件上传注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS 面向对象之神奇的prototype
Feb 26 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
May 12 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
JS实现仿QQ效果的三级竖向菜单
Sep 25 Javascript
Bootstrap布局方式详解
May 27 Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
js中创建对象的几种方式
Feb 05 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
简单了解Ajax表单序列化的实现方法
Jun 14 Javascript
Node.js中的require.resolve方法使用简介
Apr 23 #Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 #Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 #Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 #Javascript
Vue.use源码分析
Apr 22 #Javascript
uploader秒传图片到服务器完整代码
Apr 22 #Javascript
Node.js中看JavaScript的引用
Apr 22 #Javascript
You might like
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
微信支付扫码支付php版
2016/07/22 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
Python常见的pandas用法demo示例
2019/03/16 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
活动策划邀请函
2014/02/06 职场文书
小组口号大全
2014/06/09 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
写给医院的感谢信
2015/01/22 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书