You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.7 KiB

リクエストフォームとファイル

FileFormを同時に使うことでファイルとフォームフィールドを定義することができます。

/// info | 情報

アップロードされたファイルやフォームデータを受信するには、まずpython-multipartをインストールします。

例えば、pip install python-multipartのように。

///

FileFormのインポート

{* ../../docs_src/request_forms_and_files/tutorial001.py hl[1] *}

FileFormのパラメータの定義

ファイルやフォームのパラメータはBodyQueryの場合と同じように作成します:

{* ../../docs_src/request_forms_and_files/tutorial001.py hl[8] *}

ファイルとフォームフィールドがフォームデータとしてアップロードされ、ファイルとフォームフィールドを受け取ります。

また、いくつかのファイルをbytesとして、いくつかのファイルをUploadFileとして宣言することができます。

/// warning | 注意

path operationで複数のFileFormパラメータを宣言することができますが、JSONとして受け取ることを期待しているBodyフィールドを宣言することはできません。なぜなら、リクエストのボディはapplication/jsonの代わりにmultipart/form-dataを使ってエンコードされているからです。

これは FastAPI の制限ではなく、HTTPプロトコルの一部です。

///

まとめ

同じリクエストでデータやファイルを受け取る必要がある場合は、FileFormを一緒に使用します。