QHttpMultiPart Class

Die Klasse QHttpMultiPart ähnelt einer MIME-Multipart-Nachricht, die über HTTP gesendet wird. Mehr...

Kopfzeile: #include <QHttpMultiPart>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Vererbt: QObject

Öffentliche Typen

enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType }

Öffentliche Funktionen

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)

Detaillierte Beschreibung

QHttpMultiPart ähnelt einer MIME-Multipart-Nachricht, wie in RFC 2046 beschrieben, die über HTTP gesendet werden soll. Eine Multipart-Nachricht besteht aus einer beliebigen Anzahl von Körperteilen (siehe QHttpPart), die durch eine eindeutige Begrenzung getrennt sind. Die Begrenzung des QHttpMultiPart wird mit der Zeichenkette "boundary_.oOo._", gefolgt von zufälligen Zeichen, konstruiert und bietet genug Eindeutigkeit, um sicherzustellen, dass sie nicht innerhalb der Teile selbst vorkommt. Falls gewünscht, kann die Begrenzung immer noch über setBoundary() gesetzt werden.

Als Beispiel sei der folgende Codeausschnitt angeführt, der eine mehrteilige Nachricht mit einem Textteil, gefolgt von einem Bildteil, erstellt:

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.

Siehe auch QHttpPart und QNetworkAccessManager::post().

Dokumentation der Mitgliedstypen

enum QHttpMultiPart::ContentType

Liste der bekannten Inhaltstypen für einen Multipart-Subtyp, wie in RFC 2046 und anderen beschrieben.

KonstanteWertBeschreibung
QHttpMultiPart::MixedType0entspricht dem Subtyp "multipart/mixed", d. h. die Körperteile sind unabhängig voneinander, wie in RFC 2046 beschrieben.
QHttpMultiPart::RelatedType1entspricht dem Subtyp "multipart/related", d. h. die Körperteile stehen in Beziehung zueinander, wie in RFC 2387 beschrieben.
QHttpMultiPart::FormDataType2entspricht dem Subtyp "multipart/form-data", was bedeutet, dass die Körperteile Formularelemente enthalten, wie in RFC 2388 beschrieben.
QHttpMultiPart::AlternativeType3entspricht dem Subtyp "multipart/alternative", was bedeutet, dass die Körperteile alternative Darstellungen der gleichen Informationen sind, wie in RFC 2046 beschrieben.

Siehe auch setContentType().

Dokumentation der Mitgliedsfunktionen

[explicit] QHttpMultiPart::QHttpMultiPart(QObject *parent = nullptr)

Konstruiert einen QHttpMultiPart mit dem Inhaltstyp MixedType und setzt parent als übergeordnetes Objekt.

Siehe auch QHttpMultiPart::ContentType.

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

Konstruiert einen QHttpMultiPart mit dem Inhaltstyp contentType und setzt parent als übergeordnetes Objekt.

Siehe auch QHttpMultiPart::ContentType.

[virtual noexcept] QHttpMultiPart::~QHttpMultiPart()

Zerstört den Mehrteiler.

void QHttpMultiPart::append(const QHttpPart &httpPart)

Hängt httpPart an diesen Multipart an.

QByteArray QHttpMultiPart::boundary() const

gibt die Begrenzung zurück.

Siehe auch setBoundary().

void QHttpMultiPart::setBoundary(const QByteArray &boundary)

Setzt die Begrenzung auf boundary.

Normalerweise müssen Sie eine Begrenzung nicht selbst generieren; bei der Erstellung wird die Begrenzung mit der Zeichenkette "boundary_.oOo._", gefolgt von zufälligen Zeichen, eingeleitet und bietet genug Eindeutigkeit, um sicherzustellen, dass sie nicht innerhalb der Teile selbst vorkommt.

Siehe auch boundary().

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

Setzt den Inhaltstyp auf contentType. Der Inhaltstyp wird im HTTP-Header-Abschnitt verwendet, wenn die mehrteilige Nachricht über QNetworkAccessManager::post() gesendet wird. Falls Sie einen Multipart-Subtyp verwenden möchten, der nicht in QHttpMultiPart::ContentType enthalten ist, können Sie das Header-Feld "Content-Type" von Hand in QNetworkRequest einfügen und diese Anforderung dann zusammen mit der Multipart-Nachricht für die Versendung verwenden.

Siehe auch QHttpMultiPart::ContentType und QNetworkAccessManager::post().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.