在现代Web开发中,为用户提供下载功能是一项常见的需求。本教程将介绍如何使用FastAPI框架创建一个简单的Web应用,允许用户下载Excel文件。我们将演示如何生成Excel文件并将其作为响应发送给客户端。
创建FastAPI应用
首先,确保您已经安装了FastAPI库。如果没有安装,可以使用以下命令进行安装:
pip install fastapi
接下来,我们将创建一个FastAPI应用,其中包括一个路由,允许用户下载Excel文件。
from fastapi import FastAPI, Response
from fastapi.responses import StreamingResponse
import pandas as pd
import io
import xlsxwriter
app = FastAPI()
生成Excel文件
在我们的示例中,我们将创建一个简单的DataFrame,并将其转换为Excel文件。这个Excel文件将包含一些示例数据。
@app.get("/")
async def download_excel():
# 生成一个简单的 DataFrame
data = {"name": ["Alice", "Bob", "Charlie"], "age": [25, 30, 35]}
df = pd.DataFrame(data)
# 将 DataFrame 转换为 Excel 文件
buffer = io.BytesIO()
workbook = xlsxwriter.Workbook(buffer)
worksheet = workbook.add_worksheet()
for i, col in enumerate(df.columns):
worksheet.write(0, i, col)
for j, value in enumerate(df[col]):
worksheet.write(j + 1, i, value)
workbook.close()
# 将 Excel 文件转换为字节流,作为响应体返回给客户端
buffer.seek(0)
excel_bytes = buffer.getvalue()
return StreamingResponse(
io.BytesIO(excel_bytes),
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
headers={"Content-Disposition": "attachment; filename=myfile.xlsx"}
)
在上述代码中,我们首先创建了一个简单的DataFrame,然后使用xlsxwriter
库将其转换为Excel文件。最后,我们将Excel文件转换为字节流,并将其作为响应的一部分返回给客户端。
运行FastAPI应用
要运行我们的FastAPI应用,您可以使用以下命令:
uvicorn main:app --host=127.0.0.1 --port=8000 --reload
确保将main
替换为您的文件名(如果不是main.py
),并选择适合您的主机和端口号。
使用您的Web应用
现在,您的FastAPI应用已经在本地运行,您可以通过浏览器或API客户端访问它。当您访问根路径(/
)时,应用将生成一个包含示例数据的Excel文件,并将其作为下载提供。
结论
通过本教程,您学会了如何使用FastAPI框架创建一个简单的Web应用,允许用户下载Excel文件。这对于需要向用户提供数据报表或导出功能的Web应用程序非常有用。希望这个教程对您有所帮助,让您能够更好地理解如何使用FastAPI来处理文件下载功能。
请注意:本教程仅供学习和参考,不鼓励或支持任何侵犯版权或非法行为。请在合法的范围内使用Web开发技术。