Python FastAPI返回文件

Python FastAPI返回文件

Python FastAPI返回文件

在Web开发过程中,有时候我们需要返回文件给客户端,比如下载一个PDF、图片或者其他类型的文件。Python的FastAPI框架提供了方便的方法来实现这个功能。本文将详细介绍如何在FastAPI中返回文件。

1. 返回静态文件

在FastAPI中,我们可以使用FileResponse来返回静态文件,示例代码如下:

from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get("/download")
async def download_file():
    return FileResponse("test.pdf")

运行上述代码后,访问http://localhost:8000/download即可下载test.pdf文件。

2. 返回动态文件

有时候我们需要根据请求参数生成文件并返回给客户端。FastAPI提供了StreamingResponse来实现这个功能,示例代码如下:

import io
from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

@app.get("/generate/{filename}")
async def generate_file(filename: str):
    # 生成文件内容
    content = f"Hello from deepinout.com! This is {filename}"

    # 将内容写入内存文件
    file_like = io.BytesIO(content.encode())

    return StreamingResponse(file_like, media_type="text/plain")

运行上述代码后,访问http://localhost:8000/generate/test.txt即可下载包含”Hello from deepinout.com! This is test.txt”内容的文件。

3. 设置文件的MIME类型

有时候我们需要设置返回文件的MIME类型,可以通过media_type参数实现。示例代码如下:

import io
from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

@app.get("/image")
async def generate_image():
    # 生成图片内容
    content = open("image.png", "rb").read()

    # 将内容写入内存文件
    file_like = io.BytesIO(content)

    return StreamingResponse(file_like, media_type="image/png")

运行上述代码后,访问http://localhost:8000/image即可下载image.png文件,同时浏览器会将其显示为图片。

总结

通过上述示例代码,我们学习了在FastAPI中返回文件的方法。通过FileResponseStreamingResponse,我们可以方便地返回静态文件和动态生成的文件,并可以设置文件的MIME类型。在实际开发中,我们可以根据需求选择合适的方法来返回文件,以提升用户体验。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程