Sur cette page

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

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.

ConstanteValeurDescription
QFormDataBuilder::Option::Default0x00Valeurs 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::OmitRfc8187EncodedFilename0x01Lorsque 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::UseRfc7578PercentEncodedFilename0x02Lorsque 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::PreferLatin1EncodedFilename0x04La 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::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilenameCette 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.