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 相关文章推荐
为你的网站增加亮点的9款jQuery插件推荐
May 03 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
JavaScript实现一个空中避难的小游戏
Jun 06 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
9102了,你还不会移动端真机调试吗
Mar 25 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
新加坡交友网站:be2新加坡
2019/04/10 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
岗位职责的含义
2013/11/17 职场文书
联谊活动策划书
2014/01/26 职场文书
春节晚会主持词
2014/03/24 职场文书
全国文明单位申报材料
2014/05/31 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
学校德育工作总结2015
2015/05/11 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
python析构函数用法及注意事项
2021/06/22 Python
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang