QFormDataBuilder Class
La classe QFormDataBuilder est une classe de commodité qui simplifie la construction des objets QHttpMultiPart. Plus d'informations...
| 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 Network Programming API et de Implicitly Shared Classes.
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 peut être utilisée pour construire un objet QHttpMultiPart dont le type de contenu est FormDataType par défaut.
L'extrait ci-dessous montre comment construire un message multipartite avec 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 contrôlant buildMultiPart().
Plusieurs RFC ne sont pas d'accord sur la manière exacte de formater multipart/form-data. Au lieu de coder en dur l'une ou l'autre RFC, ces options vous permettent de contrôler la RFC à suivre.
| Constante | Valeur | Description |
|---|---|---|
QFormDataBuilder::Option::Default | 0x00 | Les valeurs par défaut, conçues pour maximiser l'interopérabilité en général. Toutes les options nommées ci-dessous sont désactivées. |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | Lorsque le nom de fichier d'une partie du corps contient des caractères non US-ASCII, la section 4.3 du RFC 6266 suggère d'utiliser le codage de style RFC 8187(filename*=utf-8''...). La section 4.2 du RFC 7578, plus récente, interdit toutefois l'utilisation de ce mécanisme. Les deux RFC sont à jour au moment de la rédaction de ce document, et cette option vous permet donc de choisir celui que vous souhaitez suivre. La valeur par défaut est d'inclure le code RFC 8187 filename* avec le code non codé filename, comme le suggère la RFC 6266. |
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename | 0x02 | Lorsque le nom de fichier d'une partie du corps contient des caractères non-US-ASCII, la section 4.2 du RFC 7578 suggère d'utiliser le codage en pourcentage des octets du nom de fichier codé en UTF-8. Elle poursuit en notant que de nombreuses implémentations, cependant, ne codent pas en pourcentage le nom de fichier codé en UTF-8, mais émettent simplement de l'UTF-8 "brut" (avec " et \ échappés à l'aide de \). C'est également la valeur par défaut de QFormDataBuilder. |
QFormDataBuilder::Option::PreferLatin1EncodedFilename | 0x04 | Lasection 3.2 de la RFC 5987 exigeait que les destinataires prennent en charge le codage ISO-8859-1 ("Latin-1"). Lorsque le nom de fichier d'une partie du corps contient des caractères non US-ASCII qui s'intègrent toutefois dans Latin-1, cette option préfère utiliser le codage ISO-8859-1 plutôt que UTF-8. La norme plus récente {https://datatracker.ietf.org/doc/html/rfc8187#appendix-A}{RFC 8187} n'exige plus la prise en charge de l'ISO-8859-1, de sorte que la valeur par défaut est l'envoi de tous les noms de fichiers non US-ASCII avec le codage UTF-8. |
QFormDataBuilder::Option::StrictRfc7578 | OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename | Cette option combine d'autres options pour sélectionner la conformité stricte à la RFC 7578. |
Le type Options est un typedef pour QFlags<Option>. Il stocke une combinaison OU de valeurs d'options.
Documentation des fonctions membres
QFormDataBuilder::QFormDataBuilder()
Construit un objet QFormDataBuilder vide.
[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)
Move-construit une instance de QFormDataBuilder, en la faisant pointer sur le même objet que other.
[noexcept] QFormDataBuilder::~QFormDataBuilder()
Détruit l'objet QFormDataBuilder.
std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})
Construit et renvoie un pointeur vers un objet QHttpMultipart construit selon options.
Voir aussi QHttpMultiPart.
QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)
Renvoie un objet QFormDataPartBuilder nouvellement construit en utilisant name comme paramètre name des données du formulaire. L'objet est valide tant que l'adresse QFormDataBuilder associée n'a pas été détruite.
Pour des raisons d'interopérabilité, il est fortement recommandé de limiter les caractères de name à US-ASCII.
Voir également QFormDataPartBuilder et QHttpPart.
[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)
Move-assigne 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.