
本文旨在指导开发者如何在 FastAPI 框架中实现文件上传并同时接收额外数据的接口。我们将探讨如何利用 UploadFile 类型处理文件上传,并结合其他数据类型构建灵活的 API 端点。通过示例代码和详细说明,您将学会如何高效地构建支持文件上传和数据接收的 FastAPI 应用。
FastAPI 提供了便捷的方式来处理文件上传,结合其他数据类型,可以构建功能强大的 API。以下是如何在 FastAPI 中实现文件上传并同时接收额外数据的详细步骤和示例:
基本实现
FastAPI 使用 UploadFile 类型来处理文件上传。以下是一个基本的示例,展示了如何接收上传的文件以及额外的字符串数据:
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/upload")
async def upload_file(
file: UploadFile = File(...),
transaction_id: str = ...,
organization_id: str = ...
):
"""
上传文件并接收 transaction_id 和 organization_id。
"""
file_name = f"{organization_id}_{transaction_id}_{file.filename}"
contents = await file.read() # 读取文件内容
with open(file_name, "wb") as f:
f.write(contents)
return {"filename": file_name, "size": len(contents)}代码解释:
注意事项:
使用 BaseModel 的方法(不推荐):
虽然最初的问题尝试使用 BaseModel 来处理 UploadFile,但这并不是推荐的做法,因为 UploadFile 并非可以直接序列化的数据类型。 直接在函数参数中声明 UploadFile 和其他数据参数是更简洁和推荐的方式。
总结
本文介绍了如何在 FastAPI 中处理文件上传并同时接收额外数据。通过使用 UploadFile 类型和直接在函数参数中声明数据类型,您可以轻松构建灵活高效的 API 端点。请务必注意文件存储位置、文件名生成、文件大小限制和安全性等问题,以确保您的应用程序的稳定性和安全性。
以上就是FastAPI 上传文件与数据:构建高效的文件上传接口的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号