问题描述
我有一个使用 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,"/*");
}
}
它为我解决了所有问题。