作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 API 微服务,通过 AWS 提供文件存储。我正在将 Swagger 和 Controller 组合在一起,我们需要能够允许用户在 Swagger 上上传文件。问题是我们的 Controller 被设置为接口(interface)而不是类,并且 Google/SO 的解决方案无法满足接口(interface)的要求。澄清一下,我根本不需要操作该文件,只需将其接收即可。我们的内部实现方法将接收然后将其发送到 S3。
这是使用 Java 11、AWS S3、Spring Boot 和 Swagger 2。我尝试在方法 createFile 中使用
,但我收到了两个不同的错误: @ApiParam
和 @FormDataParam
@RequestMapping(value = {"v3/registration/documents", "v4/registration/documents"})
@RestController
@Api(
value = "file-storage",
description = "File storage service",
tags = {"file-storage"})
public interface FileController {
@PostMapping(
value = "/{salesPlanAff}",
produces = {MediaType.APPLICATION_JSON_VALUE},
consumes = {MediaType.APPLICATION_JSON_VALUE})
@ApiOperation(value = "Upload a file")
@ApiResponses(
value = {
@ApiResponse(code = 200, message = "Success", response = FileResponseDTO.class),
@ApiResponse(code = 201, message = "Created"),
@ApiResponse(code = 400, message = "Bad Request"),
@ApiResponse(code = 401, message = "Unauthorized"),
@ApiResponse(code = 403, message = "Forbidden"),
@ApiResponse(code = 404, message = "Not Found"),
@ApiResponse(code = 500, message = "Internal Server Error")
})
void createFile(
@PathVariable(required = true, name = "webSessionId") String webSessionId,
@PathVariable(required = false, name = "salesPlanAff") String salesPlanAff);
我期望的是在我的 swagger 页面上有一个允许文件上传的按钮,没想到添加文件上传会这么困难。
最佳答案
我的 swagger 页面中有一个 FileUpload,它的工作方式就像一个魅力。与你的唯一区别是我不是在界面上进行的...
import org.springframework.web.multipart.MultipartFile;
...
@ApiOperation(value = "Analyse the identifiers in the file")
@RequestMapping(value = "/form", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public AnalysisResult getPostFile( @ApiParam(name = "file", value = "The file")
@RequestPart MultipartFile file,
HttpServletRequest r) {
UserData ud = controller.getUserData(file);
return controller.analyse(ud, r, file.getOriginalFilename());
}
我稍微删去了这段代码,但是你可以在我们的 repository 中找到原始代码。
此外,此代码的工作版本可以执行测试 here
谢谢
关于java - Swagger Controller 界面上的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220067/
我是一名优秀的程序员,十分优秀!