Загрузка Файлов в Spring приложении
Собственно вопрос - есть спринг приложение на Apache Tomcat 9.0. Есть jsp Страничка с содержанием кода:
<form method="POST" action="/canban/dispatcher" enctype="multipart/form-data">
<input type="hidden" name="description" value="multiple"/> <br>
<input type="file" name="uploadFileName" multiple="true"/> <br>
<input type="submit" value="Сформировать"/>
</form>
Так же есть контроллер который обрабатывает запрос по этой страничке
@RequestMapping(value = "/dispatcher", method = RequestMethod.POST, consumes = {"multipart/form-data"})
public String downloadDispatchers(@RequestParam("uploadFileName") MultipartFile[] files, ModelMap modelMap){
modelMap.addAttribute("file", files);
...// код обработки
return "fileUploadView";
}
Не могу понять, что я делаю не так. При попытке загрузить файл, пишет что данная страница недоступна.
Ответы (1 шт):
Автор решения: matriks2007
→ Ссылка
Ответ крылся в организации самого проекта. У меня есть класс конфигуратор
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
System.out.println("getRootConfigClasses");
return new Class[]{JDBCConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
System.out.println("getServletConfigClasses");
return new Class[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
System.out.println("getServletMappings");
return new String[]{"/"};
}
и есть класс web конфигурации
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "package.controller")
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/res/**").addResourceLocations("/res/");
}
@Bean
ViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
Мне в класс WebConfig необходимо было добавить следубщий бин
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
return multipartResolver;
}
и зависимость в maven прописать
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>