上传文件¶
上传文件需要用到 django_oasis.parameter.FormData
或是 django_oasis.parameter.FormItem
表单,并使用 django_oasis.schema.File
来声明文件字段。
备注
文件上传需要使用表单,而不能使用 JSON。与普通的表单提交不同,普通表单提交时 content-type 为 application/x-www-form-urlencoded,但是上传文件需要使用 multipart/form-data。不必手动填写 content-type,FormData
会自动判断使用哪种表单类型。
单文件上传¶
single_file.py [示例1]¶
from django_oasis import schema
from django_oasis.core import Resource
from django_oasis.parameter import FormItem
@Resource("/upload/single")
class UploadAPI:
def post(
self,
file=FormItem(schema.File()),
):
...
接收到的 data['file']
值为一个 InMemoryUploadedFile 对象。
多文件上传¶
使用 django_oasis.schema.List
来声明一个文件列表。
multiple_files.py [示例1]¶
from django_oasis import schema
from django_oasis.core import Resource
from django_oasis.parameter import FormItem
@Resource("/upload/multiple")
class UploadAPI:
def post(
self,
files=FormItem(
schema.List(
schema.File(),
max_items=3, # 限制最多上传 3 个文件
),
),
):
...
SwaggerUI [示例1]