FastAPI 中如何返回文件响应?

推荐答案

在 FastAPI 中,你可以使用 FileResponse 来返回文件响应。以下是一个简单的示例:

-- -------------------- ---- -------
---- ------- ------ -------
---- ----------------- ------ ------------

--- - ---------

---------------------------
----- --- ----------------
    --------- - -----------------------
    ------ ----------------------- -------------------------------

在这个示例中,FileResponse 会读取指定路径的文件并将其作为响应返回给客户端。filename 参数是可选的,用于指定下载文件的名称。

本题详细解读

1. FileResponse 的作用

FileResponse 是 FastAPI 提供的一个响应类,专门用于返回文件。它会自动处理文件的读取和传输,并且支持大文件的流式传输,避免内存占用过高。

2. 参数说明

  • path: 文件的路径,可以是绝对路径或相对路径。
  • filename: 可选参数,指定客户端下载文件时的文件名。如果不提供,客户端将使用服务器上的文件名。
  • media_type: 可选参数,指定文件的 MIME 类型。如果不提供,FastAPI 会根据文件扩展名自动推断。

3. 使用场景

FileResponse 通常用于以下场景:

  • 提供文件下载功能。
  • 返回静态文件,如图片、PDF 等。
  • 处理大文件传输,避免内存溢出。

4. 示例代码解析

-- -------------------- ---- -------
---- ------- ------ -------
---- ----------------- ------ ------------

--- - ---------

---------------------------
----- --- ----------------
    --------- - -----------------------
    ------ ----------------------- -------------------------------
  • file_path 是你要返回的文件的路径。
  • filename 是客户端下载文件时使用的文件名。
  • FileResponse 会自动处理文件的读取和传输,并将文件作为响应返回给客户端。

5. 注意事项

  • 确保文件路径正确,否则会抛出 FileNotFoundError
  • 如果文件较大,建议使用流式传输以避免内存占用过高。
  • 如果需要返回不同类型的文件(如图片、PDF 等),可以通过 media_type 参数指定 MIME 类型。
纠错
反馈