Spec-Zone.ru › Qt

Класс QHttpMultiPart

Класс QHttpMultiPart представляет собой сообщение MIME multipart, которое будет отправлено по протоколу HTTP. Подробнее...

Заголовок: #include <QHttpMultiPart>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы публичного доступа

Перечисление ContentType { MixedType, RelatedType, FormDataType, AlternativeType }

Публичные функции

QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)
QHttpMultiPart(QObject *parent = nullptr)
виртуальный ~QHttpMultiPart()
void append(const QHttpPart &httpPart)
QByteArray boundary() const
void setBoundary(const QByteArray &boundary)
void setContentType(QHttpMultiPart::ContentType contentType)

Подробное описание

Класс QHttpMultiPart представляет собой сообщение MIME multipart, как описано в RFC 2046, которое должно быть отправлено по протоколу HTTP. Сообщение multipart состоит из произвольного количества частей тела (см. QHttpPart), разделенных уникальной границей. Граница QHttpMultiPart формируется со строкой "boundary_.oOo._" и последующими случайными символами, что обеспечивает достаточную уникальность, чтобы она не встречалась внутри самих частей. При необходимости границу можно задать через setBoundary().

Например, рассмотрим следующий фрагмент кода, который создает сообщение multipart, содержащее текстовую часть, за которой следует часть изображения:

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
textPart.setBody("my text");

QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\""));
QFile *file = new QFile("image.jpg");
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart

multiPart->append(textPart);
multiPart->append(imagePart);

QUrl url("http://my.server.tld");
QNetworkRequest request(url);

QNetworkAccessManager manager;
QNetworkReply *reply = manager.post(request, multiPart);
multiPart->setParent(reply); // delete the multiPart with the reply
// here connect signals etc.

См. также QHttpPart и QNetworkAccessManager::post().

Документация по типам членов

Перечисление QHttpMultiPart::ContentType

Список известных типов контента для подтипа multipart, как описано в RFC 2046 и других документах.

Постоянная Значение Описание
QHttpMultiPart::MixedType 0 соответствует подтипу "multipart/mixed", означающему, что части тела независимы друг от друга, как описано в RFC 2046.
QHttpMultiPart::RelatedType 1 соответствует подтипу "multipart/related", означающему, что части тела связаны друг с другом, как описано в RFC 2387.
QHttpMultiPart::FormDataType 2 соответствует подтипу "multipart/form-data", означающему, что части тела содержат элементы формы, как описано в RFC 2388.
QHttpMultiPart::AlternativeType 3 соответствует подтипу "multipart/alternative", означающему, что части тела являются альтернативными представлениями одной и той же информации, как описано в RFC 2046.

См. также setContentType().

Документация по функциям членов

QHttpMultiPart::QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)

Конструирует QHttpMultiPart с типом контента contentType и устанавливает parent в качестве родительского объекта.

См. также QHttpMultiPart::ContentType.

QHttpMultiPart::QHttpMultiPart(QObject *parent = nullptr)

Конструирует QHttpMultiPart с типом контента MixedType и устанавливает parent в качестве родительского объекта.

См. также QHttpMultiPart::ContentType.

[virtual] QHttpMultiPart::~QHttpMultiPart()

Уничтожает multipart.

void QHttpMultiPart::append(const QHttpPart &httpPart)

Добавляет httpPart в этот multipart.

QByteArray QHttpMultiPart::boundary() const

Возвращает границу.

См. также setBoundary().

void QHttpMultiPart::setBoundary(const QByteArray &boundary)

Устанавливает границу в boundary.

Обычно вам не нужно генерировать границу самостоятельно; при создании граница инициализируется строкой "boundary_.oOo._" и последующими случайными символами, обеспечивая достаточную уникальность, чтобы она не встречалась внутри самих частей.

См. также boundary().

void QHttpMultiPart::setContentType(QHttpMultiPart::ContentType contentType)

Устанавливает тип контента в contentType. Тип контента будет использоваться в разделе HTTP-заголовка при отправке сообщения multipart с помощью QNetworkAccessManager::post(). В случае, если вы хотите использовать подтип multipart, не включённый в QHttpMultiPart::ContentType, вы можете вручную добавить поле заголовка "Content-Type" в QNetworkRequest, а затем использовать этот запрос вместе с сообщением multipart для отправки.

См. также QHttpMultiPart::ContentType и QNetworkAccessManager::post().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qhttpmultipart.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API