Параметр stat_result
Параметр stat_result применяется к классу
FileResponse и принимает результат
системного вызова os.stat для файла.
FastAPI использует эти метаданные для вычисления
размера файла, времени последнего изменения и заголовков
кэширования. Если параметр не указан, фреймворк сам
вызывает os.stat по пути path.
Синтаксис
FileResponse(path, stat_result=stat_result)
Пример
Давайте отдадим файл, заранее получив его метаданные через os.stat:
import os
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/file')
def get_file():
path = 'files/data.txt'
stat_result = os.stat(path)
return FileResponse(path, stat_result=stat_result)
При запросе на адрес /file FastAPI отдаст содержимое файла,
используя переданные метаданные без повторного вызова os.stat.
Пример
Давайте сравним два ответа: с параметром stat_result
и без него, чтобы увидеть одинаковые заголовки:
import os
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/with-stat')
def with_stat():
path = 'files/article.txt'
stat_result = os.stat(path)
return FileResponse(path, stat_result=stat_result)
@app.get('/without-stat')
def without_stat():
path = 'files/article.txt'
return FileResponse(path)
Оба маршрута вернут одинаковые заголовки
content-length и last-modified,
но первый не выполняет лишний системный вызов.
Пример
Давайте используем stat_result вместе
с filename и media_type:
Результат выполнения кода для адреса /download -
скачивание файла с именем user.txt и типом
text/plain.
Смотрите также
-
класс
FileResponse,
который отдаёт файл в качестве ответа -
параметр
path,
который задаёт путь к отдаваемому файлу -
параметр
filename,
который задаёт имя файла при скачивании -
параметр
media_type,
который задаёт MIME-тип отдаваемого файла