上传文件

上传文件需要用到 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]