РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
172 of 307 menu

Атрибут headers

Атрибут headers принадлежит классу UploadFile и представляет собой объект Headers из библиотеки Starlette. Он содержит HTTP-заголовки той части multipart-запроса, в которой был передан файл. Чаще всего здесь оказывается заголовок Content-Type, но клиент может прислать и другие заголовки. Атрибут доступен только для чтения и заполняется автоматически при разборе запроса.

Обратиться к атрибуту можно через точку от объекта UploadFile, который FastAPI передаёт в обработчик, если объявить параметр как UploadFile. Значения заголовков извлекаются по имени через индексацию, а проверить наличие заголовка можно оператором in.

Синтаксис

upload_file.headers

Атрибут возвращает объект Headers. К отдельному заголовку обращаются так:

upload_file.headers['content-type']

Пример

Давайте выведем все заголовки загруженного файла. Объявим маршрут, который принимает файл и возвращает его заголовки в виде словаря:

from fastapi import FastAPI, UploadFile app = FastAPI() @app.post('/upload/') async def upload_file(file: UploadFile): return {'headers': dict(file.headers)}

Отправим файл через форму:

curl -F "file=@image.png;type=image/png" http://127.0.0.1:8000/upload/

Результат выполнения кода:

{"headers": {"content-disposition": "form-data; name=\"file\"; filename=\"image.png\"", "content-type": "image/png"}}

Пример

Давайте извлечём конкретный заголовок content-type и вернём его значение отдельно:

<+python+> from fastapi import FastAPI, UploadFile app = FastAPI() @app.post('/upload/') async def upload_file(file: UploadFile): content_type = file.headers.get('content-type') return {'content_type': content_type} <-python+>

Отправим файл:

curl -F "file=@article.txt;type=text/plain" http://127.0.0.1:8000/upload/

Результат выполнения кода:

{"content_type": "text/plain"}

Пример

Давайте проверим наличие заголовка через оператор in и вернём булево значение:

from fastapi import FastAPI, UploadFile app = FastAPI() @app.post('/upload/') async def upload_file(file: UploadFile): has_type = 'content-type' in file.headers return {'has_content_type': has_type}

Отправим файл:

curl -F "file=@user.json;type=application/json" http://127.0.0.1:8000/upload/

Результат выполнения кода:

{"has_content_type": true}

Смотрите также

  • класс UploadFile,
    который представляет загруженный файл
  • атрибут content_type,
    который хранит MIME-тип файла
  • атрибут filename,
    который хранит имя загруженного файла
  • атрибут size,
    который хранит размер файла в байтах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить