springmvc上传文件异常
症状:
error:
org.springframework.web.multipart.MultipartException: Current request is not a multipart request
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:188)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:104)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
原因:
jsp中form表单 ajax提交 不能用序列化,序列化方法只能序列化非文件格式的数据 文件格式则不被序列化,后台接收不到文件数据
用 FormData来封装数据
解决方法:
jquery尽量用新版
js:
var formData = new FormData($( "#addMemberForm" )[0]); $.ajax({
type : "POST",
url : "<%=basePath%>manage/memberActive/add",
data : formData,
async: false,
cache: false,
dataType : "json",
contentType: false,
processData: false,
success: function(result){
console.log(result);
if(result){
window.location.href = "<%=basePath%>manage/memberActive/list"; }else{
alert(result.msg);
}
}
});
jsp:
<form id="addMemberForm" >
<div class="loadingActive-left">
<input type="text" name="titel" id="titel" placeholder="请输入标题" ></input>
<div class="uploadBox">
<div class="big-photo">
<div id="preview">
<img id="imghead" border="0" src="<%=basePath%>resources/images/upload.jpg" width="270"
height="100" onclick="$('#previewImg').click();"></img>
</div>
<input type="file" onchange="previewImage(this)"
style="display: none;" id="previewImg" name="file"></input>
</div>
</div>
<textarea style="width:100%; height:41%;resize:none" rows="9" cols="75" name="content" id="content" placeholder="请输入内容..." ></textarea>
</div>
</form>
action:
@RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody
public BaseResponse<Boolean> addMemberActivity(HttpServletRequest request,
@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
MemberActivity mActivitie = new MemberActivity();
UploadUtils up = new UploadUtils();
String Imgname = file.getOriginalFilename().substring(0, file.getOriginalFilename().length() - 4);
String url = up.uploadFile(1, 1, Imgname, file);
mActivitie.setStatusId((short) 1);
mActivitie.setTitel(request.getParameter("titel"));
mActivitie.setCoverUrl(url);
mActivitie.setShortDesc("无简介");
mActivitie.setContent(request.getParameter("content"));
mActivitie.setTotalPrice(0.01);
mActivitie.setDiscountPrice(0.01);
mActivitie.setCreateTime(new Timestamp(System.currentTimeMillis()));
memberActivityService.addMemberActivity(mActivitie);
return new BaseResponse<Boolean>(true);
}
最新文章
- 使用JNI封装底层input系统提供的event事件
- ajax返回值中有回车换行、空格的解决方法分享
- VI打开和编辑多个文件的命令 分屏操作
- Http Framework
- POJ 2653 Pick-up sticks(判断线段相交)
- core java 第四章笔记
- 1)③爬取网易It方面部分新闻
- 使用exchange普通表模式被切换到分区表
- hdu 1498
- Rookey.Frame v1.0极速开发平台稳定版发布
- 章节十一、1-Junit介绍
- nmap用法
- Mybatis第一天
- MongoDB存储引擎选择
- Jmeter利用CSV Data Set Config 和 _CSVRead函数实现参数化
- c++中计算程序执行时间
- CSS高速制作图片轮播的焦点
- anagrams 查找序列里具有相同字符但顺序不同的单词
- 解决java网络编程IPv6问题
- 【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
热门文章
- 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?
- Python Error: “ImportError: No module named six”,用自动安装解决依赖问题
- KETTLE——(一)资源库
- 【ABAP系列】SAP ABAP ALV合计或者小计 添加自定义文本
- day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
- layer最大化、最小化、还原回调方法
- ceph部署-集群建立
- HDU-6187.DestroyWalls(最大生成树)
- jenkins使用记录转自https://my.oschina.net/sanpeterguo/blog/197931
- python if-else替代三元表达式