推荐答案
在 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 中轻松处理文件上传。