gpt4 book ai didi

java - Swagger Controller 界面上的文件上传

转载 作者:行者123 更新时间:2023-12-01 23:51:01 24 4
gpt4 key购买 nike

我正在创建一个 API 微服务,通过 AWS 提供文件存储。我正在将 Swagger 和 Controller 组合在一起,我们需要能够允许用户在 Swagger 上上传文件。问题是我们的 Controller 被设置为接口(interface)而不是类,并且 Google/SO 的解决方案无法满足接口(interface)的要求。澄清一下,我根本不需要操作该文件,只需将其接收即可。我们的内部实现方法将接收然后将其发送到 S3。

这是使用 Java 11、AWS S3、Spring Boot 和 Swagger 2。我尝试在方法 createFile 中使用 @ApiParam@FormDataParam ,但我收到了两个不同的错误:

  1. 方法必须是抽象的
  2. 此处不允许使用注释。
@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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com