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 相关文章推荐
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
Jun 09 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
JQuery悬停控制图片轮播——代码简单
Aug 05 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
js中url对象化管理分析
Dec 29 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
微信小程序实现文件、图片上传功能
Aug 18 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的特殊设置
2006/10/09 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
php命名空间学习详解
2014/02/27 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
php生成与读取excel文件
2016/10/14 PHP
基于php判断客户端类型
2016/10/14 PHP
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
javascript操作css属性
2013/12/30 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
js回调函数仿360开机
2019/12/26 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
python实现复制大量文件功能
2019/08/31 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
毕业生实习鉴定
2013/12/11 职场文书
后勤工作职责
2013/12/22 职场文书
cf收人广告词大全
2014/03/14 职场文书
小学二年级评语
2014/04/21 职场文书
硕士生找工作求职信
2014/07/05 职场文书
委托证明模板
2014/09/16 职场文书
中学生检讨书范文
2014/11/03 职场文书
小学运动会通讯稿
2015/07/18 职场文书