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实现ASP分页函数 HTML分页函数
Sep 22 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
Aug 28 Javascript
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
javascript教程:关于if简写语句优化的方法
May 17 Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
探秘vue-rx 2.0(推荐)
Sep 21 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
一个基于flask的web应用诞生(1)
2017/04/11 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
pygame实现飞机大战
2020/03/11 Python
Python如何将装饰器定义为类
2020/07/30 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
聚美优品广告词改编
2014/03/14 职场文书
体育专业求职信
2014/07/16 职场文书
营业员岗位职责范本
2015/04/14 职场文书
2016年寒假家长评语
2015/10/10 职场文书
导游词之上海豫园
2019/10/24 职场文书