您可以使用文件和表单同时定义FileForm字段。

信息 为了接收长传的文件或者表单数据,你首先需要通过pip install python-mulipart来安装python-multipart

导入FileForm

  1. from fastapi import FastAPI, File, Form, UploadFile

定义FileForm参数

以与正文或查询相同的方式创建文件和表单参数:

  1. from fastapi import FastAPI, File, Form, UploadFile
  2. app = FastAPI()
  3. @app.post("/files/")
  4. async def create_file(
  5. file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
  6. ):
  7. return {
  8. "file_size": len(file),
  9. "token": token,
  10. "fileb_content_type": fileb.content_type,
  11. }

文件和表单字段将作为表单数据上载,您将收到文件和表单字段。
您可以将某些文件声明为bytes,将某些文件声明为UploadFile

警告 您可以在路径操作中声明多个FileForm参数,但是也不能声明希望以JSON形式接收的Body字段,因为请求将使用multipart/form-data而不是application/json进行编码。 这不是FastAPI的限制,它是HTTP协议的一部分。

概括

当您需要在同一请求中接收数据和文件时,可以同时使用“File”和Form”。