2017-05-25 3 views
0

Ich habe viele Antworten auf Stackoverflow über Multipart-Datei-Upload-Problem in Spring MVC-Anwendung gesehen. Schritt für Schritt stelle ich sicher, dass ich keine Fehler wiederhole, die andere gemacht haben.Spring mvc multipart Datei-Upload

Hier ist meine Form

<form class="form-horizontal" data-toggle="validator" 
         id="track_existing_repair" 
         method="post" 
         action="/euo/testUpload.htm" 
         enctype="multipart/form-data"> 

... 
     <div class="form-group required"> 
         <label class="control-label col-sm-4" for="proofOfPurchaseInput">Select File:</label> 
         <div class="col-sm-8"> 
         <input name="proofOfPurchase" 
          id="proofOfPurchaseInput" 
          type="file" 
          required/> 
        </div> 
       </div> 
... 
</form> 

In pom-Datei habe ich Abhängigkeit

<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.3.2</version> 
</dependency> 

multipartResolver in app-servlet.xml erklärt

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <!-- max upload size in bytes --> 
     <property name="maxUploadSize" value="20971520" /> <!-- 20MB --> 
     <!-- max size of file in memory (in bytes) --> 
     <property name="maxInMemorySize" value="1048576" /> <!-- 1MB --> 
</bean> 

Methode in der Controller-Klasse zu beantragen kartiert

@RequestMapping(value = {"/testUpload"},headers = "Content-Type=multipart/form-data", method = RequestMethod.POST) 
public String testUpload( 
      @RequestPart(value = "proofOfPurchase", required = false) MultipartFile proofOfPurchaseFile 
      ,HttpServletRequest request 
      ) throws InvalidFormatException, IOException { 
if(proofOfPurchaseFile != null){ 
    readFile(proofOfPurchaseFile); 
} 
return NAV_HOME; 
} 
  • Ich versuchte @RequestParam statt

    @RequestPart
  • Ohne erforderlich = false Ich habe "Pflicht Anfrage Teil 'proofOfPurchase' ist nicht vorhanden" Antwort, so habe ich es nicht erforderlich nur, um in Anforderung im Debugger zu untersuchen

Also, wenn ich im Debugger stoppe, war ich nicht überrascht, dass Request-Objekt zeigt mir, dass die Datei empfangen und sogar in jBoss temporären Ordner gespeichert wurde.

request object

Könnten Sie bitte darauf hinweisen, was ich konnte vermissen, dass der Frühling kann nicht die Dateien hochgeladen sehen?

Antwort

0

Das Problem tritt in einem Legacy-Projekt auf, in dem wir auch Struts verwenden. Es stellt sich heraus, dass Struts Dispatcher irgendwie mit Frühling CommonsMultipartResolver kollidiert.

Sobald ich alle Struts Servlets und Filter von web.xml entfernt habe, fangen alle an zu arbeiten.

Verwandte Themen