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 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
js利用prototype调用Array的slice方法示例
Jun 09 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
vue轮播图插件vue-awesome-swiper
Nov 27 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
vue.js 2.0实现简单分页效果
Jul 29 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
javascript实现固定侧边栏
Feb 09 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
强制设为首页代码
2006/06/19 Javascript
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
js select常用操作控制代码
2010/03/16 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
实例讲解Vue.js中router传参
2018/04/22 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
JS实现li标签的删除
2019/04/12 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python3.2模拟实现webqq登录
2016/02/15 Python
python实现识别相似图片小结
2016/02/22 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
对python 自定义协议的方法详解
2019/02/13 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python中bisect的使用方法
2019/12/31 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
农村婚礼证婚词
2014/01/10 职场文书
工程质量承诺书范文
2014/03/27 职场文书
房屋产权证明书
2014/10/15 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers