Класс QHttpMultiPart
Класс QHttpMultiPart представляет собой сообщение MIME multipart, которое должно быть отправлено по протоколу HTTP. Подробнее...
| Заголовок: | #include <QHttpMultiPart> |
| qmake: | QT += network |
| С тех пор: | Qt 4.8 |
| Наследуется от: | QObject |
Типы публичного доступа
| перечисление | ContentType { MixedType, RelatedType, FormDataType, AlternativeType } |
Функции публичного доступа
| QHttpMultiPart(QObject *parent = nullptr) | |
| QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr) | |
| virtual | ~QHttpMultiPart() |
| void | append(const QHttpPart &httpPart) |
| QByteArray | boundary() const |
| void | setBoundary(const QByteArray &boundary) |
| void | setContentType(QHttpMultiPart::ContentType contentType) |
- 31 функция публичного доступа унаследованная от QObject
Статические члены публичного доступа
| const QMetaObject | staticMetaObject |
- 9 статических членов публичного доступа унаследованных от QObject
Дополнительные наследуемые члены
- 1 свойство унаследованное от QObject
- 1 публичный слот унаследованный от QObject
- 2 сигнала унаследованные от QObject
- 9 защищённых функций унаследованных от QObject
Подробное описание
Класс QHttpMultiPart представляет собой сообщение MIME multipart, которое должно быть отправлено по протоколу HTTP.
Класс 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(QObject *parent = nullptr)
Конструирует QHttpMultiPart с типом содержимого MixedType и устанавливает parent в качестве родительского объекта.
См. также QHttpMultiPart::ContentType.
QHttpMultiPart::QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)
Конструирует QHttpMultiPart с типом содержимого contentType и устанавливает родительский объект.
См. также QHttpMultiPart::ContentType.
[virtual] QHttpMultiPart::~QHttpMultiPart()
Удаляет составную часть.
void QHttpMultiPart::append(const QHttpPart &httpPart)
Добавляет httpPart к этому составному элементу.
QByteArray QHttpMultiPart::boundary() const
Возвращает границу.
См. также setBoundary().
void QHttpMultiPart::setBoundary(const QByteArray &boundary)
Устанавливает границу в boundary.
Обычно вам не нужно генерировать границу самостоятельно; при создании граница инициализируется строкой "boundary_.oOo._" с последующими случайными символами и обеспечивает достаточную уникальность, чтобы гарантировать, что она не встречается внутри самих частей.
См. также boundary().
void QHttpMultiPart::setContentType(QHttpMultiPart::ContentType contentType)
Устанавливает тип содержимого в contentType. Тип содержимого будет использоваться в разделе заголовков HTTP при отправке составного сообщения через QNetworkAccessManager::post(). В случае, если вы хотите использовать подтип составной части, который не содержится в QHttpMultiPart::ContentType, вы можете добавить поле заголовка "Content-Type" в QNetworkRequest вручную, а затем использовать этот запрос вместе с составным сообщением для отправки.
См. также QHttpMultiPart::ContentType и QNetworkAccessManager::post().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qhttpmultipart.html