Атрибут 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 и вернём его значение отдельно:
Отправим файл:
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,
который хранит размер файла в байтах