Класс FileResponse
Класс FileResponse применяется для отправки файла клиенту.
Первым параметром передаётся путь path к файлу на диске.
Вторым параметром можно указать filename - имя файла,
которое увидит пользователь при скачивании.
Параметр media_type задаёт MIME-тип содержимого,
а stat_result позволяет передать результат os.stat,
чтобы избежать повторного чтения метаданных.
Параметр content_disposition_type управляет заголовком
Content-Disposition и принимает значения 'attachment'
или 'inline'.
Синтаксис
from fastapi.responses import FileResponse
FileResponse(path, filename=None, media_type=None, stat_result=None, content_disposition_type='attachment')
Пример
Давайте отдадим файл 'data.txt' из корня проекта:
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/download')
def download():
return FileResponse('data.txt')
Результат выполнения кода - содержимое файла 'data.txt'
в теле ответа с автоматически определённым MIME-типом.
Пример
Давайте зададим имя файла и MIME-тип вручную:
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/report')
def report():
return FileResponse(
'report.pdf',
filename='article.pdf',
media_type='application/pdf'
)
Результат выполнения кода - браузер скачает файл
под именем 'article.pdf' с типом 'application/pdf'.
Пример
Давайте откроем файл прямо в браузере, а не скачаем его,
через content_disposition_type:
Результат выполнения кода - изображение отобразится непосредственно в окне браузера.
Смотрите также
-
класс
Response,
базовый класс для всех ответов FastAPI -
класс
StreamingResponse,
который отдаёт данные потоком -
параметр
path,
который задаёт путь к файлу -
параметр
filename,
который задаёт имя скачиваемого файла