FastAPI文件下载实现
下载文件(以下载Excel为例)
一、包下载
pip install fastapi
pip install uvicorn
pip install aiofiles
// 操作Excel的包
pip install pandas
pip install openpyxl
二、准备Excel文件(使用pandas创建Excel并且保存到项目中,为下载文件做准备)
result = [
{
"id": 1,
"name": "xxx",
"age": 18
}, {
"id": 2,
"name": "bbb",
"age": 19
}
]
file = str(datetime.datetime.now().date())+".xlsx"
df = pandas.DataFrame(result)
df.columns = ["序号", "姓名", "年龄"]
df.to_excel(file, index=False)
三、下载文件
- 直接返回
FileResponse
- 参数1:文件的路径
- filename:自定义导出的文件名(需要带上格式后缀)
return FileResponse(file, filename="user.xlsx")
四、完整代码
import datetime
from fastapi import FastAPI
import pandas
from starlette.responses import FileResponse
app = FastAPI()
@app.get("/download", summary="下载文件")
async def download_file():
result = [
{
"id": 1,
"name": "xxx",
"age": 18
}, {
"id": 2,
"name": "bbb",
"age": 19
}
]
file = str(datetime.datetime.now().date())+".xlsx"
df = pandas.DataFrame(result)
df.columns = ["序号", "姓名", "年龄"]
df.to_excel(file, index=False)
return FileResponse(file, filename="user.xlsx")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8080)
五、演示效果