【发布时间】:2020-07-12 01:01:11
【问题描述】:
我正在尝试将文件从我的 Spring Boot 应用程序上传到 Amazon s3。
当我使用 POSTMAN 上传文件时,文件已成功上传到 s3。但是,当我尝试从 swagger 上传文件时,它会以状态码 200 进行响应,但不会上传文件,并且在我的 Spring Boot 应用程序中,它会引发空指针异常。
这是 CORS 问题吗(我什至尝试在 Spring Boot 配置中启用 CORS)?还是我做错了什么,例如需要将配置添加到我的招摇中或其他什么?
这是控制器代码 -
@PostMapping(value = "/uploadFile" )
public JSONObject uploadFile(MultipartFile[] file) {
return this.amazonClient.uploadFile(file);
}
这是正常工作的 POSTMAN 请求 -
这是不起作用的招摇请求 -
编辑:
像这样对Controller 方法进行更改后:
@RequestMapping(value = "/uploadFile",method = RequestMethod.POST, consumes = { "multipart/form-data" })
//@PostMapping(value = "/uploadFile" ) // consumes = MediaType.MULTIPART_FORM_DATA_VALUE
public JSONObject uploadFile(@RequestPart("file") MultipartFile[] file) {
return this.amazonClient.uploadFile(file);
}
我现在在Swagger 上收到以下 curl 请求:
curl -X POST "http://localhost:8080/storage/uploadFile" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "file={}"
您可以清楚地看到file 参数变为空。有什么想法吗?
【问题讨论】:
-
Swagger UI 中的
Content-Type是错误的 -application/json而不是multipart/form-data。看起来您的代码缺少指定操作使用的Content-Type的注释。 -
@Helen 你能指导我吗?我不确定在哪里指定
Content-Type -
@Helen 谢谢,但它不起作用。请在编辑后检查问题。我改变了我的
Controller方法。 -
我刚刚注意到您正在上传一组文件。这是 Springfox 2/OpenAPI 2.0 中的 not supported。
标签: java spring spring-boot file-upload swagger