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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
javascript demo 基本技巧
Dec 18 Javascript
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
vue+vue-router转场动画的实例代码
Sep 01 Javascript
JS中准确判断变量类型的方法
Jun 01 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
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python面向对象特殊成员
2017/04/24 Python
python中嵌套函数的实操步骤
2019/02/27 Python
python取余运算符知识点详解
2019/06/27 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
流动人口婚育证明
2014/10/19 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书