上传文件
在OpenAPI 3.0中,您可以描述直接使用请求内容上传的文件和使用multipart
请求上传的文件。
使用requestBody
关键字来描述包含文件的请求负载。在下content
,指定请求媒体类型(如image/png
或application/octet-stream
)。文件使用or 的type: string
模式,具体取决于文件内容的编码方式。format: binary
format: base64
例如:
requestBody:
content:
image/png:
schema:
type: string
format: binary
该定义对应于如下所示的HTTP请求:
POST /upload
Host: example.com
Content-Length: 808
Content-Type: image/png
[file content goes there]
通过多部分请求上传
要描述与其他数据一起发送的文件,请使用multipart
媒体类型。例如:
requestBody:
content:
multipart/form-data:
schema:
properties:
orderId:
type: integer
userId:
type: integer
fileName:
type: string
format: binary
相应的HTTP请求有效载荷将包含多个部分:
POST /upload
Host: example.com
Content-Length: 2740
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWfPNVh4wuWBlyEyQ
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="orderId"
1195
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="userId"
545
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fileName"; filename="attachment.txt"
Content-Type: text/plain
[file content goes there]
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
多文件上传
使用multipart
媒体类型定义上传任意数量的文件(一组文件):
requestBody:
content:
multipart/form-data:
schema:
properties:
filename:
type: array
items:
type: string
format: binary
相应的HTTP请求如下所示:
POST /upload
Host: example.com
Content-Length: 2740
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWfPNVh4wuWBlyEyQ
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fileName"; filename="file1.txt"
Content-Type: text/plain
[file content goes there]
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fileName"; filename="file2.png"
Content-Type: image/png
[file content goes there]
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fileName"; filename="file3.jpg"
Content-Type: image/jpeg
[file content goes there]
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ