Spring Rest Multipart Dateiupload mit AngularJS (Java Config)?

8

Ich habe Spring MVC mit java config benutzt und einige Rest-Services definiert. Ich habe Spring als Server-Backend und AngularJS als WebFrontend verwendet.

Ich möchte von meiner AngularJS-Site eine oder zwei CSV-Dateien auf meinen Rest-Service hochladen. Wie muss ich Spring mit Java Config konfigurieren, so dass es funktioniert? Ich habe Tomcat und einen Servlet 3 Container benutzt.

Mein Upload-Rest-Service sieht folgendermaßen aus:

%Vor%

Benötige ich einen "StandardServletMultipartResolver"? oder irgendetwas anderes, um den Upload zum Laufen zu bringen? und wenn ja, wie kann ich den mehrteiligen Upload mit java config aktivieren? Meine Konfiguration sieht im Moment so aus:

%Vor%

und WebConfig:

%Vor%

}

und ApplicationConfig

%Vor%

Das Beispiel mit dem Upload stammt von dieser Seite Ссылка , aber sie haben eine MultiPartConfigFactory verwendet, und das stammt aus dem Frühjahr Boot; Kann ich das benutzen? Ich habe im Moment keinen Spring-Boot benutzt. Was ist der einfachste Weg, um den Multi-Part-Upload mit meiner Konfiguration zu betreiben?

EDIT2: Ich habe zwei Dinge zu meiner Konfiguration hinzugefügt. Oben sieht der neue getServletFilter jetzt so aus, ich habe einen MultipartFilter () hinzugefügt:

%Vor%

und in meiner WebConfig habe ich einen StandardServletMultipartResolver hinzugefügt:

%Vor%

Nun möchte ich es mit einer einfachen HTML-Seite wie folgt testen:

%Vor%

aber es heißt "HTTP-Status 400 - Erforderlicher String-Parameter 'Name' ist nicht vorhanden". Warum ist der Name nicht vorhanden??

    
user2115378 14.03.2014, 13:56
quelle

2 Antworten

1

Wenn Sie Servlet 3.0 verwenden, müssen Sie das Dispatcher-Servlet so konfigurieren, dass es auch Multipart unterstützt. Ich habe genau das gleiche Problem wie Sie. Ich hatte die Multipart-Resolver-Bean konfiguriert, aber ich hatte immer noch Probleme. Fügen Sie Ihrer Anwendungsinitialisierungsklasse (die die WebApplicationInitializer erweitert) einfach folgende Zeile hinzu:

%Vor%

dispatcher ist eine Instanz von ServletRegistration.Dynamic . Für weitere Details können Sie meine Antwort auf meine Frage hier lesen.

    
Vivin Paliath 03.08.2014 23:58
quelle
0
  1. Ich hatte das gleiche Problem, und es stellte sich heraus, dass es an dem StandardServletMultipartResolver lag. Changed zu org.springframework.web.multipart.commons.CommonsMultipartResolver Siehe stackoverflow post von wo ich diese Lösung habe

  2. Dies steht möglicherweise nicht mit dem in diesem Beitrag beschriebenen Problem in Zusammenhang, kann aber helfen. Wenn DEBUG aktiviert war, konnte ich diese DEBUG-Nachricht in den Protokollen sehen: "Request ist bereits ein MultipartHttpServletRequest - wenn nicht in einem Forward, resultiert dies in der Regel aus einem zusätzlichen MultipartFilter in web.xml"

Entfernen Sie die MultipartFilter aus dem Array von Filtern in getServletFilters() . MultipartFilter mpf=new MultipartFilter();

    
Lijo Jacob 16.03.2015 01:47
quelle