QFormDataBuilder Class
Die Klasse „QFormDataBuilder“ ist eine Hilfsklasse, die die Erstellung von „ QHttpMultiPart “-Objekten vereinfacht. Mehr...
| Header: | #include <QFormDataBuilder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Seit: | Qt 6.8 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QFormDataBuilder ist Teil der Netzwerkprogrammier-API und der implizit gemeinsam genutzten Klassen.
Öffentliche Typen
| enum class | Option { Default, OmitRfc8187EncodedFilename, UseRfc7578PercentEncodedFilename, PreferLatin1EncodedFilename, StrictRfc7578 } |
| flags | Options |
Öffentliche Funktionen
| QFormDataBuilder() | |
| QFormDataBuilder(QFormDataBuilder &&other) | |
| ~QFormDataBuilder() | |
| std::unique_ptr<QHttpMultiPart> | buildMultiPart(QFormDataBuilder::Options options = {}) |
| QFormDataPartBuilder | part(QAnyStringView name) |
| QFormDataBuilder & | operator=(QFormDataBuilder &&other) |
Ausführliche Beschreibung
Die Klasse QFormDataBuilder kann verwendet werden, um ein „ QHttpMultiPart “-Objekt zu erstellen, dessen Inhaltstyp standardmäßig auf „FormDataType“ gesetzt ist.
Der folgende Codeausschnitt veranschaulicht, wie man mit QFormDataBuilder eine Multipart-Nachricht erstellt:
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();Siehe auch „ QHttpPart “, „ QHttpMultiPart “ und „ QFormDataPartBuilder “.
Dokumentation zu Mitgliedstypen
enum class QFormDataBuilder::Option
flags QFormDataBuilder::Options
Optionen zur Steuerung von buildMultiPart().
In mehreren aktuellen RFCs gibt es unterschiedliche Auffassungen darüber, wie genau ` multipart/form-data` formatiert werden soll. Anstatt einen bestimmten RFC fest zu programmieren, ermöglichen Ihnen diese Optionen die Wahl, welchem RFC Sie folgen möchten.
| Konstante | Wert | Beschreibung |
|---|---|---|
QFormDataBuilder::Option::Default | 0x00 | Die Standardwerte, die darauf ausgelegt sind, die Interoperabilität im Allgemeinen zu maximieren. Alle unten genannten Optionen sind deaktiviert. |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | Wenn der Dateiname eines Body-Teils Nicht-US-ASCII-Zeichen enthält, empfiehlt RFC 6266, Abschnitt 4.3, die Verwendung der Kodierung nach RFC 8187(filename*=utf-8''...). Der neuere RFC 7578, Abschnitt 4.2, verbietet jedoch die Verwendung dieses Mechanismus. Beide RFCs sind zum Zeitpunkt der Erstellung dieses Dokuments aktuell, daher können Sie mit dieser Option wählen, welchem Sie folgen möchten. Standardmäßig wird die nach RFC 8187 kodierte Datei „ filename* “ neben der unkodierten Datei „ filename “ einbezogen, wie in RFC 6266 empfohlen. |
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename | 0x02 | Wenn der Dateiname eines Body-Teils Nicht-US-ASCII-Zeichen enthält, empfiehlt RFC 7578, Abschnitt 4.2, die Prozentkodierung der Oktette des UTF-8-kodierten Dateinamens zu verwenden. Weiterhin wird angemerkt, dass viele Implementierungen den UTF-8-kodierten Dateinamen jedoch nicht prozentkodieren, sondern lediglich „rohes“ UTF-8 ausgeben (wobei " und \ mithilfe von \ maskiert werden). Dies ist auch die Standardeinstellung von QFormDataBuilder. |
QFormDataBuilder::Option::PreferLatin1EncodedFilename | 0x04 | RFC 5987 Abschnitt 3.2 verlangte von den Empfängern, die ISO-8859-1-Kodierung („Latin-1“) zu unterstützen. Wenn der Dateiname eines Body-Teils Nicht-US-ASCII-Zeichen enthält, die jedoch in Latin-1 passen, bevorzugt diese Option die ISO-8859-1-Kodierung gegenüber UTF-8. Der neuere {https://datatracker.ietf.org/doc/html/rfc8187#Anhang A}{RFC 8187} verlangt keine Unterstützung von ISO-8859-1 mehr, daher werden standardmäßig alle Nicht-US-ASCII-Dateinamen stattdessen in UTF-8-Kodierung gesendet. |
QFormDataBuilder::Option::StrictRfc7578 | OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename | Diese Option kombiniert andere Optionen, um eine strikte Einhaltung von RFC 7578 zu gewährleisten. |
Der Typ „Options“ ist ein `typedef` für ` QFlags<Option>`. Er speichert eine ODER-Kombination von Optionswerten.
Dokumentation der Mitgliedsfunktionen
QFormDataBuilder::QFormDataBuilder()
Erstellt ein leeres QFormDataBuilder-Objekt.
[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)
Erstellt eine QFormDataBuilder-Instanz und sorgt dafür, dass diese auf dasselbe Objekt verweist, auf das zuvor other verwiesen hat.
[noexcept] QFormDataBuilder::~QFormDataBuilder()
Löscht das „ QFormDataBuilder “-Objekt.
std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})
Erstellt ein QHttpMultipart-Objekt gemäß options und gibt einen Zeiger darauf zurück.
Siehe auch QHttpMultiPart.
QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)
Gibt ein neu erstelltes „ QFormDataPartBuilder “-Objekt zurück, wobei „ name “ als „ name “-Parameter der Formulardaten verwendet wird. Das Objekt ist so lange gültig, wie das zugehörige „ QFormDataBuilder “ nicht zerstört wurde.
Aus Gründen der Interoperabilität wird dringend empfohlen, die Zeichen in „ name “ auf US-ASCII zu beschränken.
Siehe auch „ QFormDataPartBuilder “ und „ QHttpPart “.
[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)
Weist „ other “ dieser „ QFormDataBuilder “-Instanz zu.
© 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.