症状:

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:

  1. var formData = new FormData($( "#addMemberForm" )[0]);
  2.  
  3. $.ajax({
  4. type : "POST",
  5. url : "<%=basePath%>manage/memberActive/add",
  6. data : formData,
  7. async: false,
  8. cache: false,
  9. dataType : "json",
  10. contentType: false,
  11. processData: false,
  12. success: function(result){
  13. console.log(result);
  14. if(result){
  15. window.location.href = "<%=basePath%>manage/memberActive/list";
  16.  
  17. }else{
  18. alert(result.msg);
  19. }
  20. }
  21. });

jsp:

  1. <form id="addMemberForm" >
  2. <div class="loadingActive-left">
  3. <input type="text" name="titel" id="titel" placeholder="请输入标题" ></input>
  4. <div class="uploadBox">
  5. <div class="big-photo">
  6. <div id="preview">
  7. <img id="imghead" border="0" src="<%=basePath%>resources/images/upload.jpg" width="270"
  8. height="100" onclick="$('#previewImg').click();"></img>
  9. </div>
  10. <input type="file" onchange="previewImage(this)"
  11. style="display: none;" id="previewImg" name="file"></input>
  12. </div>
  13. </div>
  14. <textarea style="width:100%; height:41%;resize:none" rows="9" cols="75" name="content" id="content" placeholder="请输入内容..." ></textarea>
  15. </div>
  16. </form>

action:

  1.    @RequestMapping(value = "add", method = RequestMethod.POST)
  2. @ResponseBody
  3. public BaseResponse<Boolean> addMemberActivity(HttpServletRequest request,
  4. @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
  5. MemberActivity mActivitie = new MemberActivity();
  6. UploadUtils up = new UploadUtils();
  7. String Imgname = file.getOriginalFilename().substring(0, file.getOriginalFilename().length() - 4);
  8. String url = up.uploadFile(1, 1, Imgname, file);
  9. mActivitie.setStatusId((short) 1);
  10. mActivitie.setTitel(request.getParameter("titel"));
  11. mActivitie.setCoverUrl(url);
  12. mActivitie.setShortDesc("无简介");
  13. mActivitie.setContent(request.getParameter("content"));
  14. mActivitie.setTotalPrice(0.01);
  15. mActivitie.setDiscountPrice(0.01);
  16. mActivitie.setCreateTime(new Timestamp(System.currentTimeMillis()));
  17. memberActivityService.addMemberActivity(mActivitie);
  18. return new BaseResponse<Boolean>(true);
  19. }

springmvc上传文件异常的更多相关文章

  1. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  2. 2. SpringMVC 上传文件操作

    1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...

  3. SpringMVC上传文件总结

    如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId ...

  4. 使用springMVC上传文件

    control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...

  5. SpringMVC上传文件(图片)并保存到本地

    SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...

  6. SpringMVC 上传文件 MultipartFile 转为 File

    在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...

  7. springmvc 上传文件时的错误

    使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...

  8. springmvc上传文件报错org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]

    在用springmvc+mybatis进行项目开发时,上传文件抛异常... org.springframework.beans.BeanInstantiationException: Could no ...

  9. SpringMVC上传文件的三种方式(转)

    直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...

随机推荐

  1. 类TreeMap

    TreeMap类 import java.util.Set; import java.util.TreeMap; public class IntegerDemo { public static vo ...

  2. MySQL使用命令导出/导入数据

    导出数据库文件 常用命令 mysqldump -uroot -pMyPassword databaseName tableName1 tableName2 > /home/foo.sql mys ...

  3. LeetCode——142 设计链表2

    题目 代码 class Solution { public: ListNode *detectCycle(ListNode *head) { ListNode *fast = head, *slow ...

  4. 多线程03-Abort

        );             t.Abort();             Console.WriteLine(; i < ; i++)             {            ...

  5. mysql数据库监控工具-MONyog的配置和基本使用项

    测试数据传输前,研发要求需要监控10万,50万,100万数量级的数据在传输过程数据库服务器的资源消耗情况,因为数据传输服务是定时任务执行,配置10秒中一次,一次处理500条,处理完10万数据可能要半个 ...

  6. JavaScript 的继承与多态

    本文先对es6发布之前javascript各种继承实现方式进行深入的分析比较,然后再介绍es6中对类继承的支持以及优缺点讨论.最后介绍了javascript面向对象编程中很少被涉及的“多态”,并提供了 ...

  7. Oracle数据库控制台常用命令

    安装好数据库以后可以通过“Win+R”打开控制台,在控制台登录Oracle输入命令来操作数据库. SQLPlus命令: SQLPlus命令是用来登录Oracle数据库的命令,有两种写法,分别如下: ( ...

  8. Java开发第一次面试经验(视频面试)

    坐标:山东潍坊公共实训基地 面试岗位:java开发实习生 我们班级一共6个人一起面试,1对1,其他人坐在旁边倾听,两个大牛,四个酱油,我应该是最黑的酱油啦. 面试问题: 1.请简短的做一下自我介绍: ...

  9. Java中 Json的使用

    转自:http://huyan.couplecoders.tech/%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C/2018/11/02/Java%E4%B ...

  10. Buses and People CodeForces 160E 三维偏序+线段树

    Buses and People CodeForces 160E 三维偏序+线段树 题意 给定 N 个三元组 (a,b,c),现有 M 个询问,每个询问给定一个三元组 (a',b',c'),求满足 a ...