QFormDataBuilder Class

Die Klasse QFormDataBuilder ist eine Komfortklasse zur Vereinfachung der Konstruktion von QHttpMultiPart Objekten. Mehr...

Kopfzeile: #include <QFormDataBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Seit: Qt 6.8

Ö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)

Detaillierte Beschreibung

Die Klasse QFormDataBuilder kann verwendet werden, um ein QHttpMultiPart Objekt zu erstellen, dessen Inhaltstyp standardmäßig auf FormDataType eingestellt ist.

Der folgende Ausschnitt zeigt, wie eine mehrteilige Nachricht mit QFormDataBuilder erstellt wird:

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.

Member Type Dokumentation

enum class QFormDataBuilder::Option
flags QFormDataBuilder::Options

Optionen, die buildMultiPart() steuern.

Mehrere aktuelle RFCs sind sich uneinig, wie genau multipart/form-data zu formatieren ist. Anstatt einen bestimmten RFC fest zu kodieren, geben diese Optionen Ihnen die Kontrolle darüber, welchem RFC Sie folgen sollen.

KonstanteWertBeschreibung
QFormDataBuilder::Option::Default0x00Die Standardwerte, die die Interoperabilität im Allgemeinen maximieren sollen. Alle unten genannten Optionen sind ausgeschaltet.
QFormDataBuilder::Option::OmitRfc8187EncodedFilename0x01Wenn der Dateiname eines body-parts Nicht-US-ASCII-Zeichen enthält, schlägt RFC 6266 Abschnitt 4.3 vor, eine Kodierung im Stil von RFC 8187 zu verwenden (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, so dass Sie mit dieser Option wählen können, welchem Sie folgen wollen. Standardmäßig wird die RFC 8187-kodierte filename* neben der nicht kodierten filename eingebunden, wie in RFC 6266 vorgeschlagen.
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename0x02Wenn der Dateiname eines Bodyparts Nicht-US-ASCII-Zeichen enthält, schlägt RFC 7578 Abschnitt 4.2 vor, die prozentuale Kodierung der Oktette des UTF-8-kodierten Dateinamens zu verwenden. Es wird auch darauf hingewiesen, dass viele Implementierungen den UTF-8-kodierten Dateinamen nicht perzentual kodieren, sondern nur "rohes" UTF-8 ausgeben (wobei " und \ mit \ escaped werden). Dies ist auch die Voreinstellung von QFormDataBuilder.
QFormDataBuilder::Option::PreferLatin1EncodedFilename0x04RFC 5987 Abschnitt 3.2 verlangt von den Empfängern die Unterstützung von ISO-8859-1 ("Latin-1") Kodierung. Wenn der Dateiname eines Bodyparts Nicht-US-ASCII-Zeichen enthält, die jedoch in Latin-1 passen, bevorzugt diese Option die ISO-8859-1-Kodierung gegenüber UTF-8. Die neuere {https://datatracker.ietf.org/doc/html/rfc8187#appendix-A}{RFC 8187} erfordert nicht mehr die Unterstützung von ISO-8859-1, so dass standardmäßig alle Nicht-US-ASCII-Dateinamen stattdessen in UTF-8-Kodierung gesendet werden.
QFormDataBuilder::Option::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilenameDiese Option kombiniert andere Optionen, um die strikte Einhaltung von RFC 7578 auszuwählen.

Der Typ Options ist ein Typedef für QFlags<Option>. Er speichert eine OR-Kombination von Optionswerten.

Dokumentation der Mitgliedsfunktionen

QFormDataBuilder::QFormDataBuilder()

Konstruiert ein leeres QFormDataBuilder-Objekt.

[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)

Move-konstruiert eine QFormDataBuilder-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.

[noexcept] QFormDataBuilder::~QFormDataBuilder()

Zerstört das Objekt QFormDataBuilder.

std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})

Konstruiert und gibt einen Zeiger auf ein QHttpMultipart-Objekt zurück, das gemäß options konstruiert wurde.

Siehe auch QHttpMultiPart.

QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)

Gibt ein neu konstruiertes QFormDataPartBuilder Objekt zurück, das name als name Parameter der Formulardaten verwendet. Das Objekt ist so lange gültig, wie das zugehörige QFormDataBuilder nicht zerstört worden ist.

Die Beschränkung von name auf US-ASCII-Zeichen wird aus Gründen der Interoperabilität dringend empfohlen.

Siehe auch QFormDataPartBuilder und QHttpPart.

[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)

Verschieben - weist other dieser QFormDataBuilder Instanz zu.

© 2025 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.