当前位置: 首页 > 知识库问答 >
问题:

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

毛德华
2023-03-14

我有一个使用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

当我试图发送输入参数时,我在邮递员中遇到了一个错误,请参见下面的图片,

共有1个答案

柴声
2023-03-14

来自FastAPI讨论主题- (#657)

如果使用< code>application/json接收JSON数据,请使用普通的Pydantic模型。

这将是与API通信的最常见方式。

如果您收到原始文件,例如图片或PDF文件以将其存储在服务器中,请使用UploadFile,它将作为表单数据(多部分/表单数据)发送。

如果您需要接收某种类型的非 JSON 结构化内容,但您希望以某种方式进行验证,例如 Excel 文件,您仍然必须使用 UploadFile 上传它并在代码中执行所有必要的验证。您可以在自己的代码中使用 Pydantic 进行验证,但在这种情况下,FastAPI 无法为您执行此操作。

所以,在你的情况下,路由器应该是,

from fastapi import FastAPI, File, UploadFile, Form

app = FastAPI()


@app.post("/predict")
async def predict(
        industry: str = Form(...), file: UploadFile = File(...)
):
    # rest of your logic
    return {"industry": industry, "filename": file.filename}
 类似资料:
  • 我有一个存储文件和其他信息的应用程序,例如作者、评论数据库。我可以将文件传递给FastAPI,但通过将其与参数一起传递来解决问题。 我检查了以下问题 如何在 FastAPI 中使用文件上传添加多个正文参数?和这个问题 [问题] 在 Pydantic 模型 #657 中使用上传文件但没有成功。 我在FastAPIendpoint中尝试了2个定义 选项1 选项2 客户端代码:以下代码用于客户端,但对于

  • 我已经为我愚蠢的问题感到抱歉,但谷歌搜索没有成功 如何在箭头函数中添加多个参数。我想在下面的函数中添加一些属性“道具”。

  • 我有一个Spring boot应用程序,它分为几个模块。主模块运行应用程序,并在resources文件夹中有一个文件。我想知道是否可以在子模块中添加另一个属性文件来分离属于该模块的属性,以及如何使其工作(因为它并非如此)。 所以,这就是目前的情况。显然,模块中的属性文件没有被读取,这导致,而如果我将内容放在其他属性文件中,则一切正常。

  • 我有一个与docusign的开发人员帐户,能够上传一个单一的PDF文件,并签署这样。但根据我的要求,我需要在docusign内一次上传多个PDF文件,并相应地签名。我们目前使用的是docusign SOAP API,下面是示例访问URL:http://etplprojects.net/docusign_API/SOAP/这可能吗?请建议。

  • 我想将图像添加到FastAPI自动留档(由Swagger UI提供),但我不知道如何做到这一点。这是代码: 正如您从代码中看到的那样,我正在尝试使用 URL 执行此操作,我在 ReDoc 和 Swagger UI 中得到的只是作为文本的 URL,而不是实际图像。另外,我想使用存储在本地驱动器中的图像。 我如何才能做到这一点? 先谢谢你。

  • 默认只有 200 和 422 如果我还想一起声明 200、201、401、404、500 等等多个状态码怎么写?