我的多部分文件在我的正面和背面之间消失了

问题描述

我有一个使用 Spring Boot 的 Java 11 应用程序。

我的请求控制器中有这个请求:

@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());
...
     }
}

生成我的战争后,我将其放入我的 Tomcat Vanilla 9.0.45。

当我尝试像这样调用我的应用程序时:curl -X POST -F '[email protected]' http://localhost:8080/import/,我的日志中总是有:

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

我不知道在哪里丢失了多部分文件...

解决方法

我终于找到了问题:我错过了初始化程序中的配置。

就像我在这个网站上看到的一样 https://www.dev2qa.com/spring-mvc-file-upload-unable-to-process-parts-as-no-multi-part-configuration-has-been-provided/ 我在我的 Initializer 中添加了 multipart 元素

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,"/*");

   }
}

它为我解决了所有问题。