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 相关文章推荐
在b/s开发中经常用到的javaScript技术
Aug 23 Javascript
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
May 07 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
原生js实现购物车
Sep 23 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网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
layui多图上传实现删除功能的例子
2019/09/23 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
python装饰器练习题及答案
2019/11/01 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
电大会计学自我鉴定
2014/02/06 职场文书
知识竞赛活动方案
2014/02/18 职场文书
物流管理专业求职信
2014/05/29 职场文书
2014年司机工作总结
2014/11/21 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python