My multipartfile disappears between my front and my back

134 Views Asked by At

I have a Java 11 application using spring boot.

I have this request in my request controller :

@RestController
public class ImportController {
     private static final Logger LOGGER = LoggerFactory.getLogger(ImportController.class);

     @PostMapping("/import")
     public ResponseEntity<List<CompareAnalysis>> importXML(@RequestParam("files") List<MultipartFile> files) {
        LOGGER.debug("issue here" + files.size());
...
     }
}

After generating my war I put it in my Tomcat Vanilla 9.0.45.

When I try to call my application like this: curl -X POST -F '[email protected]' http://localhost:8080/import/, I always have in my logs :

17:22:33.461 [http-nio-8080-exec-3] DEBUG my.app.controler.ImportController - issue here 0

I don't know where I lose my multipart file...

1

There are 1 best solutions below

3
On

I finally found the issue: I miss configuration in my Initializer.

Like I saw on this site https://www.dev2qa.com/spring-mvc-file-upload-unable-to-process-parts-as-no-multi-part-configuration-has-been-provided/ I add the multipart element in my Initializer

public class AppInitializer implements WebApplicationInitializer {

   @Override
   public void onStartup(ServletContext container) throws ServletException {
       ...

       MultipartConfigElement multipartConfig = new MultipartConfigElement("/tmp");
       dispatcher.setMultipartConfig(multipartConfig);

       dispatcher.setLoadOnStartup(1);

       dispatcher.addMapping("*.html");

       FilterRegistration.Dynamic multipartFilter = container.addFilter("multipartFilter", MultipartFilter.class);
       multipartFilter.addMappingForUrlPatterns(null, true, "/*");

   }
}

It resolves everything for me.