--- title: Отправить файл description: Соберите multipart/form-data из файла и сопутствующих полей. sources: - eazy_sdk.request.Part - eazy_sdk.request.MultipartPart api_fingerprint: "sha256:1c1493b3925e6875898c5327c62ca81ed79ab0f3bd433fed49cecac6e4dd0695" --- Используйте `Part[T]` для простого поля multipart. Для файла с именем, типом содержимого или собственными заголовками передайте `MultipartPart`. :::::{grid} 1 1 2 2 :class-container: http-exchange :gutter: 2 ::::{grid-item} :class: http-panel http-panel--request **→ Request** · ``POST /files`` ```text Content-Disposition: form-data; name="document"; filename="avatar.txt" Content-Type: text/plain ``` :::: ::::{grid-item} :class: http-panel http-panel--response **← Response** · ``201 Created`` ```json {"file_id": "file-1", "filename": "avatar.txt"} ``` :::: ::::: ```{literalinclude} ../../../../../../examples/docs/request_multipart.py :language: python :start-after: "# docs:example:start" :end-before: "# docs:example:end" ``` `markers.Part("document")` задаёт имя части. `MultipartPart` хранит содержимое, имя файла и `Content-Type`. SDK формирует границу и служебные байты до подписи и отправки. :::{dropdown} Файл примера целиком ```{literalinclude} ../../../../../../examples/docs/request_multipart.py :language: python ``` ::: Запуск: `uv run python examples/docs/request_multipart.py`. ```text uploaded: file-1 avatar.txt ``` Для фиксированной границы или модели всего тела используйте `MultipartBody(boundary=...)`. Обработчик транспорта получает уже собранные байты и не должен кодировать multipart повторно. ## Дальше - {doc}`Отправьте готовые байты `. - {doc}`Подпишите окончательное тело `.