2012-08-16 10 views
7
  • स्प्रिंग 3.1.1.RELEASE
  • जेट्टी 7.3.0.v20110203
  • कॉमन्स-fileupload 1.2.1
  • कॉमन्स-कब 1.4

मैं HTML फाइलों द्वारा दो फाइलें अपलोड करना चाहता हूं लेकिन मुझे हमेशा एक मल्टीपार्ट अनुरोध अपवाद मिलता है। मैंने बहुत कुछ googled लेकिन सही समाधान नहीं मिला।वर्तमान अनुरोध एक बहुखण्डीय अनुरोध नहीं है - वसंत MVC

org.springframework.web.multipart.MultipartException: The current request is not a multipart request 
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.assertIsMultipartRequest(RequestParamMethodArgumentResolver.java:184) 
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:149) 
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:83) 
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75) 
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156) 
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:923) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
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:727) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:935) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:870) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
at org.eclipse.jetty.server.Server.handle(Server.java:346) 
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596) 
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1068) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:807) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220) 
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:520) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528) 
at java.lang.Thread.run(Thread.java:680) 

मेरे नियंत्रक:

 @RequestMapping(value = "blub", method = RequestMethod.POST) 
    public String String(@RequestParam("version") String version, @RequestParam("changeLog") String changeLog, 
      @RequestParam("status") String status, @RequestParam("y") MultipartFile y, 
      @RequestParam("x") MultipartFile x, @RequestParam("zId") String zId, RedirectAttributes attr) { 

     double size = 0.0; 
     byte[] xFile = null; 
     byte[] yFile = null; 
     String downloadUrl = "blub"; 

     if (!x.isEmpty() && !y.isEmpty()) { 
      try { 
       xFile = x.getBytes(); 
       yFile = y.getBytes(); 
       size = x.getSize()/(1024 * 1024); 
      } catch (IOException e) { 
      } 
      System.out.println("file upload received! Name:[" + version + "] Size:[" + xFile.length + "]"); 
      System.out.println("file upload received! Name:[" + version + "] Size:[" + yFile.length + "]"); 
     } else { 
      return "file upload failed!"; 
     } 

     zService.saveZ(new Z(changeLog, status, downloadUrl, size, new Date(), yFile, xFile, 
       Integer.parseInt(zId))); 
     return "redirect:Z"; 
    } 

मेरी .jsp पेज:

<form method="POST" action="/form/blub" id="Z" class="form-horizontal" enctype=”multipart/form-data”> 
         <fieldset> 
          <legend>Create Z</legend> 

          <div class="control-group"> 
           <label class="control-label" for="input">Version</label> 
           <div class="controls"> 
            <input type="text" class="input-xlarge" id="version" name="version"> 
           </div> 
          </div> 

          <div class="control-group"> 
           <label class="control-label" for="textarea">Changelog</label> 
           <div class="controls"> 
            <textarea class="input-xlarge" id="textarea" rows="4" id="changeLog" name="changeLog"></textarea> 
           </div> 
          </div> 

          <div class="control-group"> 
           <label class="control-label" for="input">Status</label> 
           <div class="controls"> 
            <input type="text" class="input-xlarge" id="status" name="status"> 
           </div> 
          </div> 


          <div class="control-group"> 
           <label class="control-label" for="select01">Select list</label> 
           <div class="controls"> 
            <select id="Z" name="Z"> 

             <c:forEach items="${z}" var="current"> 
              <option value="${z.id}"> 
               <c:out value="${z.name}" /> 
              </option> 
             </c:forEach> 

            </select> 
           </div> 
          </div> 
          <div class="control-group"> 
           <label class="control-label" for="x">File input</label> 
           <div class="controls"> 
            <input class="input-file" id="x" type="file"> 
           </div> 
          </div> 

          <div class="control-group"> 
           <label class="control-label" for="y">File input</label> 
           <div class="controls"> 
            <input class="input-file" id="y" type="file"> 
           </div> 
          </div> 

          <div class="form-actions"> 
           <button type="submit" class="btn btn-success">Create Z</button> 
           <button type="reset" class="btn">Cancel</button> 
          </div> 
         </fieldset> 
        </form> 

वसंत-serverlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns="http://www.springframework.org/schema/beans" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

    <context:annotation-config /> 
    <!-- use this for Spring Jackson JSON support --> 
    <mvc:annotation-driven /> 
    <mvc:default-servlet-handler /> 
    <tx:annotation-driven transaction-manager="transactionManager" /> 
    <jdbc:embedded-database id="dataSource" type="H2" /> 

    <context:component-scan base-package="com.x.y.z.config" /> 

    <context:component-scan base-package="com.x.y.z.market.dao" /> 

    <context:component-scan base-package="com.x.y.z.service.app" /> 

    <context:component-scan base-package="com.x.y.z.controller" /> 

    <bean id="multipartResolver" 
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 
    <bean 
     class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 

     <property name="viewResolvers"> 

      <list> 

       <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 

        <property name="viewClass" 
         value="org.springframework.web.servlet.view.JstlView" /> 

        <property name="prefix" value="/WEB-INF/jsp/" /> 

        <property name="suffix" value=".jsp" /> 
       </bean> 
      </list> 
     </property> 
    </bean> 

</beans> 

उत्तर

7

आप अपने वसंत एक्सएमएल को यह जोड़ने की जरूरत है

<bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
</bean> 
+0

ऊपर देखें। मैं अपनी पोस्ट अपडेट करता हूं और यह पहले से ही मेरे वसंत-servlet.xml -.- – Philippxp

+3

में है किसी ने इसे समझ लिया? मेरी भी यही समस्या है। – INElutTabile

3

कृपया सुनिश्चित करें कि आप अपने jsp में form तत्व की enctype -attribute के लिए सही उद्धरण का उपयोग कर रहे हैं।

+1

मुझे यह सही समस्या थी, लेकिन मुझे enctype को multipart/form-data में बदलकर हल किया गया था। मैं गिल से सहमत हूं कि आपको अपने जेएसपी में उद्धरणों को ठीक करने की जरूरत है। – java1337

7

जोड़ने का प्रयास करें हेडर:

@RequestMapping(value=("/uploadpsd"),headers=("content-type=multipart/*"),method=RequestMethod.POST) 
1

1. enctype=”multipart/form-data”

2. enctype="multipart/form-data"

निरीक्षण दोहरे उद्धरण चिह्नों यहाँ वहाँ उन दोनों के बीच एक अंतर है ... enctype=”multipart/form-data” से enctype="multipart/form-data" का उपयोग

संबंधित मुद्दे