【问题标题】:Spring - Uploading file not working in swaggerSpring - 上传文件不能大摇大摆地工作
【发布时间】: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


【解决方案1】:

我认为,当我尝试上传和下载文件时,Swagger 不支持正确上传或下载文件,上传工作正常,但是当我用 swagger 下载它时,这个文件无法打开,但是与邮递员一起使用一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 2015-12-14
    • 2019-05-05
    • 2020-03-18
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多