如何在 FastAPI 中使用 fileupload 添加多个正文参数?

我有一个使用 FastAPI 部署的机器学习模型,但问题是我需要该模型采用二体参数


app = FastAPI()


class Inputs(BaseModel):

    industry: str = None

    file: UploadFile = File(...)


@app.post("/predict")

async def predict(inputs: Inputs):

    # params

    industry = inputs.industry

    file = inputs.file

    ### some code ###

    return predicted value

当我尝试发送输入参数时,我在邮递员中收到错误,请参见下图,

https://img1.sycdn.imooc.com/65265a5b0001207710410347.jpg

https://img1.sycdn.imooc.com/65265a6300017ec810240211.jpg

侃侃尔雅
浏览 203回答 1
1回答

慕侠2389804

如果您正在接收 JSON 数据,application/json请使用普通的 Pydantic 模型。这将是与 API 通信的最常见方式。如果您收到原始文件(例如图片或 PDF 文件)并将其存储在服务器中,则使用UploadFile,它将作为表单数据 ( multipart/form-data) 发送。如果您需要接收某种类型的非 JSON 结构化内容,但希望以某种方式进行验证(例如 Excel 文件),您仍然需要使用上传它并在代码中执行所有必要的验证UploadFile。您可以在自己的代码中使用 Pydantic 进行验证,但在这种情况下 FastAPI 无法为您执行此操作。因此,就您而言,路由器应该是,from fastapi import FastAPI, File, UploadFile, Formapp = FastAPI()@app.post("/predict")async def predict(        industry: str = Form(...),        file: UploadFile = File(...)):    # rest of your logic    return {"industry": industry, "filename": file.filename}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python