当前位置: 首页 > 知识库问答 >
问题:

如何在OpenAPI中指定多文件上传?

陈斌
2023-03-14

我试图从我的代码库生成数据来填充OpenAPI 3.0输入。

我有一个restendpoint,用于将文件上载到服务器。

我有一个表单作为聚合vaadin上传组件,用于上传文件。路径是/upload all,表单参数名是my attachment。表单正确地将文件上传到服务器,所以这不是问题所在。

服务器endpoint使用超文本标记语言窗体规范中的XQRS RestXQ上传文件来实现。

我正在尝试为多部分文件上传的OpenAPI 3.0UI创建一个OpenAPI JSON输入。以下是我尝试过的:

"/upload-all": {
    "post": {
        "consumes": ["multipart/form-data"],
        "description": "Upload zip file to the server",
        "responses": {
            "content": {
                "application/json": {
                    "schema": {
                        "type": "object"
                    }
                }
            }
        },
        "parameters": [
            {
                "in": "formData",
                "schema": {
                    "type": "array",
                    "items": {
                        "type": "file"
                    }
                },
                "name": "my-attachment"
            }
        ]
    }
},

我收到一个错误,表单参数my attachment没有被填充。我错过了什么?我还没有在OpenAPI网站上找到一个明确的规范。

更新:我尝试将代码的输出更改为:

"/upload-all": {
    "post": {
        "requestBody": {
            "content": {
                "multipart/form-data": {
                    "schema": {
                        "properties": {
                            "my-attachment": {
                                "type": "array",
                                "items": {
                                    "format": "binary",
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "description": "Upload zip file to the server",
        "responses": {
            "content": {
                "application/json": {
                    "schema": {
                        "type": "object"
                    }
                }
            }
        }
    }
},

OpenAPI UI显示了以下内容:

应该是这样的:

OpenAPI用户界面是最新的。这里少了什么?

共有1个答案

仲孙兴平
2023-03-14

您就快到了-只需将"type":"object"添加到您的请求正文架构中:

        "requestBody": {
            "content": {
                "multipart/form-data": {
                    "schema": {
                        "type": "object",   // <-------
                        "properties": {
                            "my-attachment": {
                                ...

确保您使用的是3.25.3版或更高版本的Swigger UI。早期版本不支持多文件上传。

 类似资料:
  • 我正在使用OpenAPI/Swagger来指定我的API。 有一件事我找不到,那就是如何指定一个集合。 我正在使用https://editor.swagger.io/我输入了整个API。对于要指定为集的属性,我编写了以下代码: 我本以为uniqueItems会起作用并生成一个Set,但事实并非如此。相反,生成了以下代码: 有没有办法生成类似 而是? 我在SO中找到了一个可能的解决方案,但这需要在p

  • 我想为我的Swagger API创建一个递归规范。这个概念似乎没有出现在Swagger文档中,所以我怀疑这是不可能的。因此,我也愿意接受任何由Swagger支持的替代解决方案。 例如,我试图创建一个类似文档的结构。每个文档都有部分,每个部分都有文本和自己的部分。我计划使用这样的APIendpoint: http://a.b.com/docs/{文档ID} http://a.b.com/docs/{

  • 问题内容: 我正在尝试使用以下代码:- 我没有得到结果。 问题答案: 您可以使用AutoIT或JAVA代码。下面我将两者都用作您的参考。尝试任何一个 AutoIt中的代码是 希望这给你一个主意

  • 问题内容: 我已经为“ Debian Linux”创建了一个Java应用程序。现在,我希望该应用程序读取放置在指定该应用程序的jar文件的目录中的文件。那么在File Object的参数中要指定什么呢? 在上述声明中,作为参数指定相对文件路径的参数是什么,该相对文件路径表示放置应用程序的jar文件的路径? 问题答案: 如果您知道文件的名称,那么当然 如果您不知道名称,则可以使用File对象的lis

  • 在log4j中,我可以这样指定文件: 但是在log4j2中,我不知道如何在一个句子中重写