From c00c2d1ecf3133a284ee55994633c4b341989bcb Mon Sep 17 00:00:00 2001 From: jaystone776 <1732865113@qq.com> Date: Fri, 2 Jul 2021 22:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Add=20Chinese=20translation=20fo?= =?UTF-8?q?r=20Tutorial=20-=20Request=20-=20Forms=20-=20and=20-=20Files=20?= =?UTF-8?q?(#3249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- .../docs/tutorial/request-forms-and-files.md | 38 +++++++++++++++++++ docs/zh/mkdocs.yml | 1 + 2 files changed, 39 insertions(+) create mode 100644 docs/zh/docs/tutorial/request-forms-and-files.md diff --git a/docs/zh/docs/tutorial/request-forms-and-files.md b/docs/zh/docs/tutorial/request-forms-and-files.md new file mode 100644 index 000000000..a27ba93d5 --- /dev/null +++ b/docs/zh/docs/tutorial/request-forms-and-files.md @@ -0,0 +1,38 @@ +# 请求表单与文件 + +FastAPI 支持同时使用 `File` 和 `Form` 定义文件和表单字段。 + +!!! info "说明" + + 接收上传文件或表单数据,要预先安装 `python-multipart`。 + + 例如,`pip install python-multipart`。 + +## 导入 `File` 与 `Form` + +```Python hl_lines="1" +{!../../../docs_src/request_forms_and_files/tutorial001.py!} +``` + +## 定义 `File` 与 `Form` 参数 + +创建文件和表单参数的方式与 `Body` 和 `Query` 一样: + +```Python hl_lines="8" +{!../../../docs_src/request_forms_and_files/tutorial001.py!} +``` + +文件和表单字段作为表单数据上传与接收。 + +声明文件可以使用 `bytes` 或 `UploadFile` 。 + +!!! warning "警告" + + 可在一个*路径操作*中声明多个 `File` 与 `Form` 参数,但不能同时声明要接收 JSON 的 `Body` 字段。因为此时请求体的编码为 `multipart/form-data`,不是 `application/json`。 + + 这不是 **FastAPI** 的问题,而是 HTTP 协议的规定。 + +## 小结 + +在同一个请求中接收数据和文件时,应同时使用 `File` 和 `Form`。 + diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml index ed1142214..85e470e59 100644 --- a/docs/zh/mkdocs.yml +++ b/docs/zh/mkdocs.yml @@ -75,6 +75,7 @@ nav: - tutorial/cookie-params.md - tutorial/request-forms.md - tutorial/request-files.md + - tutorial/request-forms-and-files.md - tutorial/handling-errors.md - tutorial/body-updates.md - 安全性: