springMVC 用query.ajax文件上传

来源:互联网 发布:改车软件 编辑:程序博客网 时间:2024/05/22 22:58

各位大侠,请教个问题。

springMVC 文件上传,出错。

页面:

<form id="contentForm"  method="post" enctype="multipart/form-data">                   <input type="hidden" name="type" value="$!type" />                   <table class="tablesorter" cellspacing="0">                       <tbody>                          <tr>                              <td>标题</td>                              <td><input type="text" id="title" name="title" class="comment_text"/></td>                          </tr>                          <tr>                              <td>作者</td>                              <td><input type="text" id="author" name="author" class="comment_text" /></td>                          </tr>                          <tr>                              <td>所属类目</td>                              <td>             <!-- style="width:155px; height:20px;" -->                                  <select name="catId" class="comment_text">                                      #if($categoryList)                                          #foreach($category in $categoryList)                                              <option value="$!category.id">$!category.name</option>                                          #end                                      #end                                  </select>                              </td>                          </tr>                          <tr>                              <td>封面图片</td>                              <td><input type="file" id="uploadFile" name="uploadFile" class="comment_text"></td>                          </tr>                          #if($!type == $!cookBook)                          <tr>                              <td>视频地址</td>                              <td><input type="text" id="resourceUrl" name="resourceUrl" class="comment_text"></td>                          </tr>                          #end                          <tr>                              <td>正文</td>                              <td>                                  <textarea name="content" id="editor_id" style="width:1300px;height:480px;"></textarea>                              </td>                          </tr>                          <tr>                              <td><input type="button" id="save" value="保存"/></td>                              <td>##                                  <input type="button" id="saveAndPush" value="保存并发布"/>                              <input type="button" value="取消" onclick="location.href='$urlBroker.getUrl('KariquBossStaticDomain').toString()/sns/content/list?pageNo=1&type=$!type'" /></td>                          </tr>                        </tbody>                    </table>               </form>



js:

       // 保存        $("#save").click(function(E){            E.preventDefault();            $("#contentForm").attr("action", "$urlBroker.getUrl('KariquBossStaticDomain').toString()/sns/content/add");            //$("#contentForm").attr("enctype", "multipart/form-data");            var url = $("#contentForm").attr("action");            jQuery.ajax({                type:'POST',                async:true,                url: url,                data: $("#contentForm").serialize(),                dataType:"json",                success:function(response){                    if(response.success){//                        location.href = response.url;                    }else{                    }                }            })        });

后台部分代码:

    @RequestMapping(value = "/sns/content/add", method = RequestMethod.POST)    public String createContent(Article article, String resourceUrl, MultipartFile uploadFile, HttpServletResponse response) throws IOException {        try {            String fileName = uploadFile.getOriginalFilename();            String pictureUrl = null;            // 上传了图片            if (PictureValidateUtil.isPicture(fileName)) {                // 返回上传的图片地址                pictureUrl = this.uploadImage(uploadFile, article.getCatId());            }


结果我提交 进不去后台方法,报错。。。。。

org.springframework.web.multipart.MultipartException: The current request is not a multipart request.


<h2>发生系统错误,请稍后再试</h2>

<pstyle="float:right;color:white;">
org.springframework.web.multipart.MultipartException: The current request is not a multipart request.
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.assertIsMultipartRequest(RequestParamMethodArgumentResolver.java:183)
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:149)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:82)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:74)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:155)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.kariqu.sns.web.boss.common.UserSessionFilter.doFilter(UserSessionFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)