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 |
- Liste de tous les membres, y compris les membres hérités
- QHttpMultiPart fait partie de l'API de programmation réseau.
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.
| Constante | Valeur | Description |
|---|---|---|
QHttpMultiPart::MixedType | 0 | correspond 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::RelatedType | 1 | correspond 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::FormDataType | 2 | correspond 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::AlternativeType | 3 | correspond 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.