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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QFormDataBuilder ist Teil von Network Programming API und Implicitly Shared Classes.
Ö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.
Konstante | Wert | Beschreibung |
---|---|---|
QFormDataBuilder::Option::Default | 0x00 | Die Standardwerte, die die Interoperabilität im Allgemeinen maximieren sollen. Alle unten genannten Optionen sind ausgeschaltet. |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | Wenn 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::UseRfc7578PercentEncodedFilename | 0x02 | Wenn 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::PreferLatin1EncodedFilename | 0x04 | RFC 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::StrictRfc7578 | OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename | Diese 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.