推荐答案
在 FastAPI 中,可以使用 File
和 UploadFile
来处理文件上传。以下是一个简单的示例:
from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...)): return {"filename": file.filename}
在这个示例中,UploadFile
是一个特殊的类,用于处理文件上传。File(...)
表示这是一个必需的文件参数。
本题详细解读
1. 导入必要的模块
首先,需要从 fastapi
模块中导入 FastAPI
、File
和 UploadFile
:
from fastapi import FastAPI, File, UploadFile
2. 创建 FastAPI 应用实例
接下来,创建一个 FastAPI
应用实例:
app = FastAPI()
3. 定义文件上传的路由
使用 @app.post
装饰器定义一个处理文件上传的路由。在这个路由中,file
参数的类型是 UploadFile
,并且使用 File(...)
来表示这是一个必需的文件参数:
@app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...)): return {"filename": file.filename}
4. 处理上传的文件
在路由处理函数中,可以通过 file.filename
获取上传文件的文件名,并将其返回给客户端。
5. 运行应用
最后,使用 uvicorn
运行 FastAPI 应用:
uvicorn main:app --reload
6. 测试文件上传
可以使用 curl
或 Postman 等工具测试文件上传功能。例如,使用 curl
上传文件:
curl -X POST "http://127.0.0.1:8000/uploadfile/" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@yourfile.txt"
7. 返回结果
如果文件上传成功,服务器将返回上传文件的文件名:
{ "filename": "yourfile.txt" }
通过这种方式,你可以在 FastAPI 中轻松处理文件上传。