FastAPI 中如何处理文件上传?

推荐答案

在 FastAPI 中处理文件上传可以通过 FileUploadFile 类来实现。以下是一个简单的示例:

在这个示例中,UploadFile 类用于处理上传的文件,File(...) 用于指定文件是必需的。

本题详细解读

文件上传的基本概念

在 FastAPI 中,文件上传通常通过 HTTP 的 multipart/form-data 请求来实现。UploadFile 类提供了对上传文件的访问和操作。

UploadFile 类的使用

UploadFile 类提供了以下常用方法:

  • file.read(size: int = -1): 读取文件内容。
  • file.write(data: bytes): 写入文件内容。
  • file.seek(offset: int): 移动文件指针。
  • file.close(): 关闭文件。

示例代码解析

  • file: UploadFile = File(...)File(...) 表示文件是必需的,如果客户端没有上传文件,FastAPI 会返回 422 错误。
  • file.filename:获取上传文件的文件名。

处理大文件

对于大文件,可以使用 async with 语句来确保文件在操作完成后被正确关闭:

多文件上传

FastAPI 也支持多文件上传:

在这个示例中,files 是一个包含多个 UploadFile 对象的列表。

文件上传的限制

可以通过 File 的参数来限制文件的大小和类型:

  • max_size:限制文件的最大大小。
  • file_types:限制文件的 MIME 类型。

通过这些方法,FastAPI 提供了灵活且强大的文件上传处理能力。

纠错
反馈