Printemps télécharger des problèmes de fichiers
J'ai besoin de télécharger le fichier à partir du navigateur au serveur. J'utilise printemps 3.2 comme mon framework web.
J'ai donc configuré mon appli de ce genre.
1 - j'ai web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>racoonsoft.chaos.settings</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>admin/library</welcome-file>
</welcome-file-list>
</web-app>
2 - MainConfig classe
@Configuration
@Import({WebConfig.class })
public class MainConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public static ScheduledAnnotationBeanPostProcessor scheduledAnnotationBeanPostProcessor() {
return new ScheduledAnnotationBeanPostProcessor();
}
@Bean
public static StandardServletMultipartResolver multipartResolver() {
StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
return resolver;
}
}
3 - Contrôleur pour gérer les téléchargements en plusieurs parties
@Controller
@MultipartConfig(fileSizeThreshold=1024*1024*2, //2MB
maxFileSize=1024*1024*10, //10MB
maxRequestSize=1024*1024*50)
public class FileUpload
{
public static final int UPLOAD_RESULT_OK = 100000;
@Autowired
BookDao book_dao;
@RequestMapping(value = "/admin/library/upload_file", method = RequestMethod.POST)
public String saveFiles(@RequestParam("file-file") MultipartFile file) throws IOException
{
if (!file.isEmpty())
{
byte[] bytes = file.getBytes();
return "redirect:caps/total_fail";
}
else
{
return "redirect:caps/total_fail";
}
}
}
4 - jsp où j'ai placé mon formulaire pour soumettre des fichiers
...<form method="post" action="/admin/library/upload_file" enctype="multipart/form-data">
<input type="text" name="name"/>
<input type="file" name="file-file"/>
<input type="submit"/>
</form>...
Quand je soumettre mon formulaire j'ai eu une Exception
org.springframework.web.bind.MissingServletRequestParameterException: Required MultipartFile parameter 'file-file' is not present
org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:202)
J'ai aucune idée pourquoi. Quand j'enlève le @RequestParam annotaion j'ai eu ma méthode invoquée mais paramètre du fichier = null.
Quel est mon problème?
source d'informationauteur user2160696
Vous devez vous connecter pour publier un commentaire.
J'ai résolu ce problème en ajoutant ce qui suit à mon ressort fichier de config:
(L'erreur que je recevais était "org.springframework.web.bind.MissingServletRequestParameterException: MultipartFile paramètre 'monfichier' n'est pas présent
je peux le faire avec
@user64141 est juste, mais si à l'aide de Java config au lieu de xml, essayez
Vous avez également besoin d'
MultipartFilter
configuré pour votre webapp. Selon sa Javadoc, il se résout multipart demandes à l'aide de la MultipartResolver (mais vous avez qu'une seule déjà configurés). Vous aurez besoin de la carte (une partie de) la demande de chemin d'accès pour le Contrôleur qui gère l'upload de fichiers.Tout d'abord, ajoutez le
MultipartFilter
à votre web.xml:Prochaine, carte le filtre à (une partie de) l'URL qui doit accepter les uploads de fichier: