Загрузка Файлов в 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>
→ Ссылка