我正在开发一个Sping Boot 应用程序,它有一个控制器来帮助上传Multipart
文件:
@PostMapping("/files")
public ResponseEntity<?> uploadFiles(
@RequestParam("file") MultipartFile[] file, String comment)
throws IOException, ExecutionException, InterruptedException {
log.debug("Total files to store: {}", file.length);
log.debug("comment: {}", comment);
fileService.storeFile(Arrays.asList(file), comment);
return ResponseEntity.ok(environment.getProperty("file.upload.success"));
}
**问题:**OpenDocAPI(swagger)无法将此有效负载理解为文件。
如果我提到@RequestParam("file") MultipartFile file
或String[]
,如果我使用MultipartFiles数组,它将显示此字段为String
。
我的Sping Boot 父项:
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
spring doc openapi依赖:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.9</version>
</dependency>
Swagger页面:
当我点击Try it out时,结果页面:
执行按钮不起作用
你知道我在控制器里漏掉了什么吗?
**PS -**我试着提一下:
@PostMapping(value = "/files", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
但OpenAPI仍然只会将其视为String
。
1条答案
按热度按时间e5nqia271#
您可以使用
@RequestPart
和MediaType.MULTIPART_FORM_DATA_VALUE
。可以与OpenAPI中的
@Parameter
(io.swagger.v3.oas.annotations
)结合使用:在
swagger-ui
上,应在右侧显示选择的multipart/form-data
:参考: