Sur cette page

QHttpMultiPart Class

La classe QHttpMultiPart reproduit la structure d'un message MIME multipart destiné à être envoyé via HTTP. En savoir plus...

En-tête : #include <QHttpMultiPart>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network
Hérite de : QObject

Types publics

enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType }

Fonctions publiques

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)

Description détaillée

QHttpMultiPart s'apparente à un message MIME multipart, tel que décrit dans la RFC 2046, destiné à être envoyé via HTTP. Un message multipart se compose d'un nombre arbitraire de parties de corps (voir QHttpPart), séparées par une limite unique. La délimitation de QHttpMultiPart est constituée de la chaîne « boundary_.oOo._ » suivie de caractères aléatoires, ce qui garantit une unicité suffisante pour s'assurer qu'elle n'apparaisse pas à l'intérieur des parties elles-mêmes. Si nécessaire, la délimitation peut toujours être définie via la fonction setBoundary().

À titre d’exemple, considérons l’extrait de code suivant, qui construit un message multipart contenant une partie texte suivie d’une partie image :

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.

Voir également QHttpPart et QNetworkAccessManager::post().

Documentation sur les types de membres

enum QHttpMultiPart::ContentType

Liste des types de contenu connus pour un sous-type multipart, tels que décrits dans la RFC 2046 et d'autres documents.

ConstanteValeurDescription
QHttpMultiPart::MixedType0correspond au sous-type « multipart/mixed », ce qui signifie que les parties du corps du message sont indépendantes les unes des autres, comme décrit dans la RFC 2046.
QHttpMultiPart::RelatedType1correspond au sous-type « multipart/related », ce qui signifie que les parties du corps du message sont liées les unes aux autres, comme décrit dans la RFC 2387.
QHttpMultiPart::FormDataType2correspond au sous-type « multipart/form-data », ce qui signifie que les parties du corps du message contiennent des éléments de formulaire, comme décrit dans la RFC 2388.
QHttpMultiPart::AlternativeType3correspond au sous-type « multipart/alternative », ce qui signifie que les parties du corps du message sont des représentations alternatives d’une même information, comme décrit dans la RFC 2046.

Voir également setContentType().

Documentation des fonctions membres

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

Crée un objet QHttpMultiPart avec le type de contenu « MixedType » et définit « parent » comme objet parent.

Voir également QHttpMultiPart::ContentType.

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

Crée un objet QHttpMultiPart avec le type de contenu « contentType » et définit « parent » comme objet parent.

Voir également QHttpMultiPart::ContentType.

[virtual noexcept] QHttpMultiPart::~QHttpMultiPart()

Supprime le fichier multipart.

void QHttpMultiPart::append(const QHttpPart &httpPart)

Ajoute le fichier « httpPart » à ce message multipart.

QByteArray QHttpMultiPart::boundary() const

renvoie la limite.

Voir également la fonction ` setBoundary()`.

void QHttpMultiPart::setBoundary(const QByteArray &boundary)

Définit la limite sur boundary.

En général, vous n'avez pas besoin de générer vous-même une limite ; lors de la construction, la limite est initialisée avec la chaîne « boundary_.oOo._ » suivie de caractères aléatoires, ce qui garantit une unicité suffisante pour s'assurer qu'elle n'apparaisse pas à l'intérieur des parties elles-mêmes.

Voir également boundary().

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

Définit le type de contenu sur contentType. Ce type de contenu sera utilisé dans la section des en-têtes HTTP lors de l'envoi du message multipart via QNetworkAccessManager::post(). Si vous souhaitez utiliser un sous-type multipart qui ne figure pas dans QHttpMultiPart::ContentType, vous pouvez ajouter manuellement le champ d'en-tête « Content-Type » à l'QNetworkRequest, puis utiliser cette requête avec le message multipart pour l'envoi.

Voir également QHttpMultiPart::ContentType et QNetworkAccessManager::post().

© 2026 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.