FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,基于 Python 3.7+ 的类型提示。它使用异步编程模型,可以显著提高应用程序的性能。
FastAPI 主要用于构建 RESTful API,支持各种 HTTP 方法(GET、POST、PUT、DELETE 等)。
FastAPI 适用于构建高性能的 web 服务,特别是在需要处理大量并发请求的场景中,如微服务、实时数据处理等。
以下是一个使用 FastAPI 下载文件的示例代码:
from fastapi import FastAPI, Response
import shutil
import os
app = FastAPI()
@app.get("/download/{filename}")
async def download_file(filename: str):
file_path = f"./files/{filename}"
if not os.path.exists(file_path):
return Response(content="File not found", status_code=404)
response = Response(
content=shutil.copyfileobj(open(file_path, 'rb'), Response().body),
media_type="application/octet-stream",
headers={"Content-Disposition": f"attachment; filename={filename}"}
)
return response
@app.get("/download/{filename}")
定义了一个 GET 请求的路由,路径中包含一个动态参数 filename
。if not os.path.exists(file_path):
检查文件是否存在,如果不存在则返回 404 错误。shutil.copyfileobj(open(file_path, 'rb'), Response().body)
读取文件内容并写入响应体,设置 media_type
为 application/octet-stream
,表示这是一个二进制流,同时设置 Content-Disposition
头部,提示浏览器下载文件。通过以上步骤,你可以使用 FastAPI 实现文件下载功能,并处理常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云