症状:

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);
}

最新文章

  1. 使用JNI封装底层input系统提供的event事件
  2. ajax返回值中有回车换行、空格的解决方法分享
  3. VI打开和编辑多个文件的命令 分屏操作
  4. Http Framework
  5. POJ 2653 Pick-up sticks(判断线段相交)
  6. core java 第四章笔记
  7. 1)③爬取网易It方面部分新闻
  8. 使用exchange普通表模式被切换到分区表
  9. hdu 1498
  10. Rookey.Frame v1.0极速开发平台稳定版发布
  11. 章节十一、1-Junit介绍
  12. nmap用法
  13. Mybatis第一天
  14. MongoDB存储引擎选择
  15. Jmeter利用CSV Data Set Config 和 _CSVRead函数实现参数化
  16. c++中计算程序执行时间
  17. CSS高速制作图片轮播的焦点
  18. anagrams 查找序列里具有相同字符但顺序不同的单词
  19. 解决java网络编程IPv6问题
  20. 【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测

热门文章

  1. 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?
  2. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题
  3. KETTLE——(一)资源库
  4. 【ABAP系列】SAP ABAP ALV合计或者小计 添加自定义文本
  5. day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
  6. layer最大化、最小化、还原回调方法
  7. ceph部署-集群建立
  8. HDU-6187.DestroyWalls(最大生成树)
  9. jenkins使用记录转自https://my.oschina.net/sanpeterguo/blog/197931
  10. python if-else替代三元表达式