# 请求表单与文件 { #request-forms-and-files } FastAPI 支持同时使用 `File` 和 `Form` 定义文件和表单字段。 /// info | 信息 接收上传的文件和/或表单数据,首先安装 [`python-multipart`](https://github.com/Kludex/python-multipart)。 请先创建并激活一个[虚拟环境](../virtual-environments.md),然后再安装,例如: ```console $ pip install python-multipart ``` /// ## 导入 `File` 与 `Form` { #import-file-and-form } {* ../../docs_src/request_forms_and_files/tutorial001_an_py310.py hl[3] *} ## 定义 `File` 与 `Form` 参数 { #define-file-and-form-parameters } 创建文件和表单参数的方式与 `Body` 和 `Query` 一样: {* ../../docs_src/request_forms_and_files/tutorial001_an_py310.py hl[10:12] *} 文件和表单字段作为表单数据上传与接收。 并且你可以将部分文件声明为 `bytes`,将部分文件声明为 `UploadFile`。 /// warning | 警告 可在一个*路径操作*中声明多个 `File` 与 `Form` 参数,但不能同时声明要接收 JSON 的 `Body` 字段。因为此时请求体的编码为 `multipart/form-data`,不是 `application/json`。 这不是 **FastAPI** 的问题,而是 HTTP 协议的规定。 /// ## 小结 { #recap } 在同一个请求中接收数据和文件时,应同时使用 `File` 和 `Form`。