Spring MVC Datei-upload - Nicht Teile, da keine multi-part-Konfiguration wurde zur Verfügung gestellt
So, ich bin ein Neuling auf Frühling, und ich versuche, Datei-upload funktioniert für mein Projekt (ich bin mit der Spring Tool Suite btw.) und wenn Sie ein Formular Einreichen alle ich bekomme ist:
HTTP Status 500 - nicht analysieren Konnte-servlet, multipart-request; nested exception is java.lang.IllegalStateException: Nicht teilen, da keine multi-part-Konfiguration angegeben wurde
Stack-trace aus dem browser:
type Exception report Nachricht Konnte nicht analysiert-servlet, multipart-request; nested exception is java.lang.IllegalStateException: Nicht teilen, da keine multi-part-Konfiguration wurde zur Verfügung gestellt Beschreibung Der server hat einen internen Fehler, der verhinderte, dass es von der Erfüllung dieser Anforderung. Ausnahme org.springframework.web.multipart.MultipartException: nicht analysieren Konnte-servlet, multipart-request; nested exception is java.lang.IllegalStateException: Nicht teilen, da keine multi-part-Konfiguration wurde zur Verfügung gestellt org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:100) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.(StandardMultipartHttpServletRequest.java:78) org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:75) org.springframework.web.multipart.Unterstützung.MultipartFilter.doFilterInternal(MultipartFilter.java:108) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) Ursache java.lang.IllegalStateException: Nicht teilen, da keine multi-part-Konfiguration wurde zur Verfügung gestellt org.apache.catalina.- Anschluss.Anfrage.parseParts(Request.java:2676) org.apache.catalina.- Anschluss.Anfrage.getParts(Request.java:2643) org.apache.catalina.- Anschluss.RequestFacade.getParts(RequestFacade.java:1083) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:85) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.(StandardMultipartHttpServletRequest.java:78) org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:75) org.springframework.web.multipart.Unterstützung.MultipartFilter.doFilterInternal(MultipartFilter.java:108) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) Hinweis: Der volle stack-trace, der die Ursache ist in den Apache-Tomcat/8.0.27 Protokolle.
Dies ist der form-tag in der jsp:
<form:form class="form-horizontal" role="form" method="post"
action="newArtist.html" modelAttribute="artist" enctype="multipart/form-data">
Input part:
<div class="form-group">
<div class="col-lg-3">
<label for="photo">Artist photo:</label>
<form:input type="file" id="photo" path="photo"></form:input>
</div>
</div>
Foto gespeichert ist, in diesem Bereich Künstler-Objekt:
@Lob
private byte[] photo;
Controller mapping-Methoden:
@RequestMapping(value = "/newArtist", method = RequestMethod.GET)
public String showAddArtistForm(Model model)
{
model.addAttribute("artist", new Artist());
return "newArtist";
}
@RequestMapping(value = "/newArtist", method = RequestMethod.POST)
public String addArtist(@ModelAttribute("artist") @Valid Artist artist, BindingResult result,
@RequestParam("photo") MultipartFile photo) throws IOException
{
if (result.hasErrors())
return "newArtist";
if(photo.getBytes() != null)
artist.setPhoto(photo.getBytes());
artistService.addArtist(artist);
return "redirect:artists.html";
}
Multipart resolver-Konfiguration in servlet-context.xml:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10000000"/>
</bean>
Filter in web.xml:
<filter>
<filter-name>MultipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>MultipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Abhängigkeiten:
<!-- Apache Commons FileUpload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Apache Commons IO -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Ich auch importiert Tomcat-config-Datei context.xml zu META-INF/context.xml und bearbeitet Kontext-tag, etwa so:
<Context allowCasualMultipartParsing="true">
Nichts scheint zu funktionieren, jede Hilfe wird sehr geschätzt.
InformationsquelleAutor kbijoch | 2016-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich brauchen Sie keine filter auf dem web.xml um den upload Ihrer Datei multipart mit Spring MVC. Ich habe die gleiche Konfiguration in meinem Projekt, und es funktionierte (${spring.version} = 4.3.4.RELEASE):
POM
HTML
Frühjahr Kontext
Frühjahr controller
InformationsquelleAutor luis-br
Ist es gerade nach vorn von der Ausnahme, dass keine multi-part-Konfiguration gefunden wird. Obwohl Sie zur Verfügung gestellt haben multipartResolver bean.
Das problem ist, dass, während die Angabe der MultipartFilter vor dem Spring-Security-filter, wird versucht den multipartResolver bean aber kann ihn nicht finden. Weil Sie erwarten, dass die bean-name/id als filterMultipartResolver statt multipartResolver.
Tun Sie sich selbst einen gefallen. Bitte ändern Sie die bean-Konfiguration wie folgt -
<bean id="multipartResolver" name="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10000000"/> </bean>
Dank 🙂InformationsquelleAutor R Ali Ashik
Ich habe etwas ähnliches, aber was ich habe ist nur eine Datei senden, ohne das mapping zu jedem Attribut in meinem Modell, in deinem Fall würde ich ändern:
In Ihrem controller
nur für test-Zwecke, entfernen Sie das Gültig-ab-Steuerung. Alle Ihre Konfiguration sieht richtig aus, ich habe das gleiche und funktioniert
Noch keinen Erfolg, aber danke für die Hilfe. Hat der name der Datei egal?
Ich denke nicht so, aber Sie könnten versuchen, mit einem kleinen, weniger als 1mb und mit dem Namen test.log oder so ähnlich. Ist komisch, ich habe den gleichen code, lassen Sie mich noch einmal überprüfen
Ich habe versucht, einige Dateien mit verschiedenen Erweiterungen, immer noch das gleiche Problem. Könnte sein, Fragen der Umwelt?
InformationsquelleAutor cralfaro
Keiner der Antworten, die die Frage richtig. Als pro In der Tomcat-Dokumentation, auf die Konfiguration von
allowCasualMultipartParsing
:So, was ist der konforme Weg? Lesen Sie die offizielle JEE 6 tutorial gibt einen Hinweis. Wenn Sie verwenden wollen ein spec-konformen Weise mit Servlet 3 oder neuer, ist Ihr servlet muss ein
MultipartConfig
. Sie haben drei Möglichkeiten, je nachdem, wie Sie die Konfiguration Ihres servlet:context.addServlet(name, servlet).setMultipartConfig(new MultipartConfigElement("your_path")
.@javax.servlet.annotation.MultipartConfig
.Mit XML-Konfiguration, fügen Sie diese an die
WEB-INF/web.xml
descriptor, im Abschnitt des servlet:InformationsquelleAutor Martín Straus
Fügen Sie Sie In Ihre config-Datei:
InformationsquelleAutor susan097
Hatte das gleiche Problem in einer Spring-Boot-Anwendung, diese Ausnahmen, die mehrfach vorkommen:
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: Das Feld multipartFile überschreitet seine maximal zulässige Größe 1048576 bytes.
Loszuwerden, die tomcat exception mit dieser, mit copy catting von http://www.mkyong.com/spring-boot/spring-boot-file-upload-example/
Tomcat große Datei-upload-Verbindung zurückgesetzt. Müssen lassen {@link #containerCustomizer()} richtig funktioniert, andere weisen, die Ausnahme wird die mehrfach vorkommen, RequestMapping für uploadError fehl.
InformationsquelleAutor ElMurxOr
Wenn Sie Tomcat verwenden 8.
Konfigurieren Sie die folgenden Einstellungen in Tomcat conf/context.xml
InformationsquelleAutor Yachin K