Spring MVC fichier télécharger - pas en mesure de traiter les parties comme pas de multi-partie de la configuration a été fourni
Donc je suis un débutant de Printemps et j'essaye de l'upload d'un fichier de travail pour mon projet (je suis en utilisant Spring Tool Suite btw.) et lors de la soumission d'un formulaire tout ce que je reçois est:
D'État HTTP 500 - n'a pas Pu analyser multipart servlet demande; nested exception java.lang.IllegalStateException: Impossible de traiter les parties comme pas de multi-partie de la configuration a été fourni
Trace de la pile à partir du navigateur:
type de rapport d'Exception le message n'a pas Pu analyser multipart servlet demande; nested exception java.lang.IllegalStateException: Impossible de traiter les parties comme pas de multi-partie de la configuration a été fourni description Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête. exception org.springframework.web.multipart.MultipartException: n'a pas Pu analyser multipart servlet demande; nested exception java.lang.IllegalStateException: Impossible de traiter les parties comme pas de multi-partie de la configuration a été fourni 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.de soutien.MultipartFilter.doFilterInternal(MultipartFilter.java:108) org.springframework.web.le filtre.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) cause java.lang.IllegalStateException: Impossible de traiter les parties comme pas de multi-partie de la configuration a été fourni org.apache.catalina.connecteur.Demande.parseParts(Requête.java:2676) org.apache.catalina.connecteur.Demande.getParts(Requête.java:2643) org.apache.catalina.connecteur.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.de soutien.MultipartFilter.doFilterInternal(MultipartFilter.java:108) org.springframework.web.le filtre.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) remarque Le plein de trace de pile de la cause racine est disponible dans Apache Tomcat/8.0.27 journaux.
C'est la balise de formulaire en jsp:
<form:form class="form-horizontal" role="form" method="post"
action="newArtist.html" modelAttribute="artist" enctype="multipart/form-data">
D'entrée de la partie:
<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>
Photo est stockée dans ce champ de l'Artiste objet:
@Lob
private byte[] photo;
Contrôleur de méthodes de cartographie:
@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 résolveur de configuration dans servlet-context.xml:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10000000"/>
</bean>
Filtres 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>
Dépendances:
<!-- 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>
J'ai aussi importé de fichier de configuration de Tomcat context.xml pour META-INF/context.xml et édité Contexte de la balise comme ceci:
<Context allowCasualMultipartParsing="true">
Rien ne semble fonctionner, toute aide sera grandement appréciée.
OriginalL'auteur kbijoch | 2016-06-20
Vous devez vous connecter pour publier un commentaire.
Fait, vous n'avez pas besoin d'un filtre sur l'web.xml afin de télécharger votre fichier en plusieurs parties avec Spring MVC. J'ai la même configuration dans mon projet et cela a fonctionné (${printemps.version} = 4.3.4.La LIBÉRATION):
POM
HTML
Printemps contexte
Printemps contrôleur
OriginalL'auteur luis-br
Il est simple de l'exception que pas de multi-partie de la configuration est trouvé. Si vous avez fourni multipartResolver bean.
Le problème est que lors de la spécification de MultipartFilter avant le Printemps filtre de Sécurité, Il tente d'obtenir la multipartResolver bean, mais ne peut pas le trouver. Parce qu'il s'attendre à la fève nom/id filterMultipartResolver au lieu de multipartResolver.
Faites-vous une faveur. S'il vous plaît changer la fève de configuration comme suit -
<bean id="multipartResolver" name="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10000000"/> </bean>
Merci 🙂OriginalL'auteur R Ali Ashik
J'ai quelque chose de similaire, mais ce que j'ai fait est juste envoyer un fichier sans cartographie avec n'importe quel attribut dans mon modèle, dans votre cas, je voudrais modifier ce:
Dans votre contrôleur
juste pour le test, retirez le Valide à partir de votre contrôleur. Toute la configuration ressemble à droite, j'ai le même et de travail
Toujours pas de succès, mais merci pour votre aide. Le nom de fichier de la matière?
Je ne pense pas, mais vous pouvez essayer avec un petit de moins de 1 mo et nommé test.journal ou quelque chose comme ça. C'est bizarre j'ai le même code, laissez-moi vérifier de nouveau
J'ai essayé des fichiers avec des extensions différentes, toujours le même problème. Pourraient être liées à l'environnement?
OriginalL'auteur cralfaro
Aucune des réponses traiter le problème correctement. Comme par La documentation de Tomcat, sur la configuration de
allowCasualMultipartParsing
:Alors, quelle est la plus conforme? La lecture de l'officiel JEE 6 tutoriel donne un indice. Si vous souhaitez utiliser un spec-conformité avec Servlet 3 ou plus récent, votre servlet doit avoir un
MultipartConfig
. Vous avez trois choix, en fonction de la façon dont vous configurez votre servlet:context.addServlet(name, servlet).setMultipartConfig(new MultipartConfigElement("your_path")
.@javax.servlet.annotation.MultipartConfig
.Avec XML de configuration, ajouter à la
WEB-INF/web.xml
descripteur, dans la section de votre servlet:OriginalL'auteur Martín Straus
Ajouter Dans votre fichier de config:
OriginalL'auteur susan097
Eu le même problème, au Printemps de Démarrage de l'application, ces exceptions se produisent plusieurs fois:
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: Le champ multipartFile dépasse sa taille maximale autorisée de 1 048 576 octets.
De se débarrasser de l'tomcat exception avec cette, avec copie cat de http://www.mkyong.com/spring-boot/spring-boot-file-upload-example/
Tomcat grand upload de fichier de réinitialisation de la connexion. Besoin de laisser {@link #containerCustomizer()} travail correctement, l'autre sage exception se produit plusieurs fois, RequestMapping pour uploadError échouera.
OriginalL'auteur ElMurxOr
Si vous utilisez Tomcat 8.
Configurer les éléments suivants dans Tomcat conf/context.xml
OriginalL'auteur Yachin K