Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Yurii Motov <yurii.motov.monte@gmail.com> Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> Co-authored-by: Maruo.S <raspi-maru2004@outlook.jp>
2.0 KiB
リクエストフォームとファイル
FileとFormを同時に使うことでファイルとフォームフィールドを定義することができます。
/// info | 情報
アップロードされたファイルやフォームデータを受信するには、まずpython-multipartをインストールします。
仮想環境{.internal-link target=_blank}を作成し、それを有効化してから、例えば次のようにインストールしてください:
$ pip install python-multipart
///
FileとFormのインポート
{* ../../docs_src/request_forms_and_files/tutorial001_an_py39.py hl[3] *}
FileとFormのパラメータの定義
ファイルやフォームのパラメータはBodyやQueryの場合と同じように作成します:
{* ../../docs_src/request_forms_and_files/tutorial001_an_py39.py hl[10:12] *}
ファイルとフォームフィールドがフォームデータとしてアップロードされ、ファイルとフォームフィールドを受け取ります。
また、いくつかのファイルをbytesとして、いくつかのファイルをUploadFileとして宣言することができます。
/// warning | 注意
path operationで複数のFileとFormパラメータを宣言することができますが、JSONとして受け取ることを期待しているBodyフィールドを宣言することはできません。なぜなら、リクエストのボディはapplication/jsonの代わりにmultipart/form-dataを使ってエンコードされているからです。
これは FastAPI の制限ではなく、HTTPプロトコルの一部です。
///
まとめ
同じリクエストでデータやファイルを受け取る必要がある場合は、File とFormを一緒に使用します。