推荐答案
在 FastAPI 中,你可以使用 FileResponse 来返回文件响应。以下是一个简单的示例:
// www.javascriptcn.com code example
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/download-file/")
async def download_file():
file_path = "path/to/your/file.txt"
return FileResponse(file_path, filename="downloaded_file.txt")在这个示例中,FileResponse 会读取指定路径的文件并将其作为响应返回给客户端。filename 参数是可选的,用于指定下载文件的名称。
本题详细解读
1. FileResponse 的作用
FileResponse 是 FastAPI 提供的一个响应类,专门用于返回文件。它会自动处理文件的读取和传输,并且支持大文件的流式传输,避免内存占用过高。
2. 参数说明
path: 文件的路径,可以是绝对路径或相对路径。filename: 可选参数,指定客户端下载文件时的文件名。如果不提供,客户端将使用服务器上的文件名。media_type: 可选参数,指定文件的 MIME 类型。如果不提供,FastAPI 会根据文件扩展名自动推断。
3. 使用场景
FileResponse 通常用于以下场景:
- 提供文件下载功能。
- 返回静态文件,如图片、PDF 等。
- 处理大文件传输,避免内存溢出。
4. 示例代码解析
// www.javascriptcn.com code example
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/download-file/")
async def download_file():
file_path = "path/to/your/file.txt"
return FileResponse(file_path, filename="downloaded_file.txt")file_path是你要返回的文件的路径。filename是客户端下载文件时使用的文件名。FileResponse会自动处理文件的读取和传输,并将文件作为响应返回给客户端。
5. 注意事项
- 确保文件路径正确,否则会抛出
FileNotFoundError。 - 如果文件较大,建议使用流式传输以避免内存占用过高。
- 如果需要返回不同类型的文件(如图片、PDF 等),可以通过
media_type参数指定 MIME 类型。