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应用之禁止抓屏、复制、打印
Feb 21 Javascript
js 中 document.createEvent的用法
Aug 29 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
Nov 17 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
微信小程序实现图片自适应(支持多图)
Jan 25 Javascript
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
jquery实现动态添加附件功能
Oct 23 jQuery
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
详解小程序如何改变onLoad的执行时机
Nov 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
PHP 的 __FILE__ 常量
2007/01/15 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
分享PHP header函数使用教程
2013/09/05 PHP
Yii配置文件用法详解
2014/12/04 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
深入分析PHP设计模式
2020/06/15 PHP
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
python递归函数绘制分形树的方法
2018/06/22 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Python定义一个函数的方法
2020/06/15 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
六十大寿答谢词
2014/01/12 职场文书
小学教师节活动方案
2014/01/31 职场文书
代领毕业证委托书
2014/08/02 职场文书
质量月活动总结
2014/08/26 职场文书
2014年科协工作总结
2014/12/09 职场文书
2014公司年终工作总结
2014/12/19 职场文书
会计工作检讨书
2015/02/19 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
肖申克救赎观后感
2015/06/02 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL