FastAPI教程 請(qǐng)求表單與文件

2022-08-20 11:42 更新

FastAPI 支持同時(shí)使用 File 和 Form 定義文件和表單字段。

說明

接收上傳文件或表單數(shù)據(jù),要預(yù)先安裝 python-multipart。

例如,pip install python-multipart。

導(dǎo)入 File 與 Form

from fastapi import FastAPI, File, Form, UploadFile

app = FastAPI()


@app.post("/files/")
async def create_file(
    file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
    return {
        "file_size": len(file),
        "token": token,
        "fileb_content_type": fileb.content_type,
    }

定義 File 與 Form 參數(shù)

創(chuàng)建文件和表單參數(shù)的方式與 Body 和 Query 一樣:

from fastapi import FastAPI, File, Form, UploadFile

app = FastAPI()


@app.post("/files/")
async def create_file(
    file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
    return {
        "file_size": len(file),
        "token": token,
        "fileb_content_type": fileb.content_type,
    }

文件和表單字段作為表單數(shù)據(jù)上傳與接收。

聲明文件可以使用 bytes 或 UploadFile 。

警告

可在一個(gè)路徑操作中聲明多個(gè) File 與 Form 參數(shù),但不能同時(shí)聲明要接收 JSON 的 Body 字段。因?yàn)榇藭r(shí)請(qǐng)求體的編碼為 multipart/form-data,不是 application/json。

這不是 FastAPI 的問題,而是 HTTP 協(xié)議的規(guī)定。

小結(jié)

在同一個(gè)請(qǐng)求中接收數(shù)據(jù)和文件時(shí),應(yīng)同時(shí)使用 File 和 Form。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)