QFormDataBuilder Class
La classe `QFormDataBuilder` est une classe utilitaire destinée à simplifier la création d'objets ` QHttpMultiPart `. En savoir plus...
| En-tête : | #include <QFormDataBuilder> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Depuis : | Qt 6.8 |
- Liste de tous les membres, y compris les membres hérités
- QFormDataBuilder fait partie de l'API de programmation réseau et des classes partagées implicitement.
Types publics
| enum class | Option { Default, OmitRfc8187EncodedFilename, UseRfc7578PercentEncodedFilename, PreferLatin1EncodedFilename, StrictRfc7578 } |
| flags | Options |
Fonctions publiques
| QFormDataBuilder() | |
| QFormDataBuilder(QFormDataBuilder &&other) | |
| ~QFormDataBuilder() | |
| std::unique_ptr<QHttpMultiPart> | buildMultiPart(QFormDataBuilder::Options options = {}) |
| QFormDataPartBuilder | part(QAnyStringView name) |
| QFormDataBuilder & | operator=(QFormDataBuilder &&other) |
Description détaillée
La classe QFormDataBuilder permet de créer un objet ` QHttpMultiPart ` dont le type de contenu est défini par défaut sur `FormDataType`.
L'extrait de code ci-dessous montre comment créer un message multipart à l'aide de QFormDataBuilder :
QFormDataBuilder builder;
QFile image(u"../../pic.png"_s); image.open(QFile::ReadOnly);
QFile mask(u"../../mask.png"_s); mask.open(QFile::ReadOnly);
builder.part("image"_L1).setBodyDevice(&image, "the actual image");
builder.part("mask"_L1).setBodyDevice(&mask, "the mask image");
builder.part("prompt"_L1).setBody("Lobster wearing a beret");
builder.part("n"_L1).setBody("2");
builder.part("size"_L1).setBody("512x512");
std::unique_ptr<QHttpMultiPart> mp = builder.buildMultiPart();Voir également QHttpPart, QHttpMultiPart et QFormDataPartBuilder.
Documentation sur les types de membres
enum class QFormDataBuilder::Option
flags QFormDataBuilder::Options
Options permettant de contrôler le formatage de buildMultiPart().
Plusieurs RFC actuelles divergent sur la manière exacte de formater ` multipart/form-data`. Au lieu d’imposer une RFC en particulier, ces options vous permettent de choisir celle que vous souhaitez suivre.
| Constante | Valeur | Description |
|---|---|---|
QFormDataBuilder::Option::Default | 0x00 | Valeurs par défaut, conçues pour optimiser l’interopérabilité en général. Toutes les options mentionnées ci-dessous sont désactivées. |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | Lorsque le nom de fichier d'une partie du corps du message contient des caractères non US-ASCII, la section 4.3 de la RFC 6266 recommande d'utiliser l'encodage de type RFC 8187(filename*=utf-8''...). La RFC 7578, plus récente, en section 4.2, interdit toutefois l'utilisation de ce mécanisme. Ces deux RFC étant en vigueur à la date de rédaction du présent document, cette option vous permet de choisir laquelle suivre. Par défaut, le fichier filename*, encodé selon la RFC 8187, est inclus aux côtés du fichier non encodé filename, comme le suggère la RFC 6266. |
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename | 0x02 | Lorsque le nom de fichier d’une partie du corps du message contient des caractères non US-ASCII, la section 4.2 de la RFC 7578 suggère d’utiliser l’encodage en pourcentage des octets du nom de fichier encodé en UTF-8. Elle précise toutefois que de nombreuses implémentations n’ effectuent pas d’encodage en pourcentage du nom de fichier encodé en UTF-8, mais se contentent d’émettre de l’UTF-8 « brut » (avec les caractères " et \ échappés à l’aide de \). C’est également le comportement par défaut de QFormDataBuilder. |
QFormDataBuilder::Option::PreferLatin1EncodedFilename | 0x04 | La section 3.2 de la RFC 5987 exigeait que les destinataires prennent en charge l’encodage ISO-8859-1 (« Latin-1 »). Lorsqu’un nom de fichier d’une partie du corps du message contient des caractères non US-ASCII qui s’inscrivent toutefois dans la norme Latin-1, cette option privilégie l’encodage ISO-8859-1 plutôt que l’UTF-8. La norme plus récente {https://datatracker.ietf.org/doc/html/rfc8187#annexe-A}{RFC 8187} n’exige plus la prise en charge de la norme ISO-8859-1 ; par défaut, tous les noms de fichiers non US-ASCII sont donc envoyés en encodage UTF-8. |
QFormDataBuilder::Option::StrictRfc7578 | OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename | Cette option combine d’autres options pour garantir une conformité stricte à la norme RFC 7578. |
Le type Options est un typedef pour QFlags<Option>. Il stocke une combinaison OR de valeurs d’options.
Documentation des fonctions membres
QFormDataBuilder::QFormDataBuilder()
Crée un objet QFormDataBuilder vide.
[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)
La fonction `move` construit une instance de `QFormDataBuilder` en la faisant pointer vers le même objet que celui vers lequel pointait ` other `.
[noexcept] QFormDataBuilder::~QFormDataBuilder()
Supprime l'objet ` QFormDataBuilder `.
std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})
Crée et renvoie un pointeur vers un objet `QHttpMultipart` instancié conformément à la spécification disponible à l'adresse options.
Voir également QHttpMultiPart.
QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)
Renvoie un objet ` QFormDataPartBuilder ` nouvellement créé, en utilisant ` name ` comme paramètre ` name ` des données du formulaire. L'objet reste valide tant que l'objet ` QFormDataBuilder ` associé n'a pas été détruit.
Il est fortement recommandé de limiter les caractères d'name à l'US-ASCII pour des raisons d'interopérabilité.
Voir également QFormDataPartBuilder et QHttpPart.
[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)
Cette opération attribue l'other à cette instance QFormDataBuilder.
© 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.