QFormDataBuilder Class
La clase QFormDataBuilder es una clase de conveniencia para simplificar la construcción de objetos QHttpMultiPart. Más...
| Cabecera: | #include <QFormDataBuilder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Desde: | Qt 6.8 |
- Lista de todos los miembros, incluyendo los heredados
- QFormDataBuilder es parte de API de Programación en Red y Clases Implícitamente Compartidas.
Tipos Públicos
| enum class | Option { Default, OmitRfc8187EncodedFilename, UseRfc7578PercentEncodedFilename, PreferLatin1EncodedFilename, StrictRfc7578 } |
| flags | Options |
Funciones Públicas
| QFormDataBuilder() | |
| QFormDataBuilder(QFormDataBuilder &&other) | |
| ~QFormDataBuilder() | |
| std::unique_ptr<QHttpMultiPart> | buildMultiPart(QFormDataBuilder::Options options = {}) |
| QFormDataPartBuilder | part(QAnyStringView name) |
| QFormDataBuilder & | operator=(QFormDataBuilder &&other) |
Descripción Detallada
La clase QFormDataBuilder se puede utilizar para construir un objeto QHttpMultiPart con el tipo de contenido por defecto FormDataType.
El siguiente fragmento de código muestra cómo construir un mensaje multiparte con 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();
Ver también QHttpPart, QHttpMultiPart, y QFormDataPartBuilder.
Documentación del tipo de miembro
clase enum QFormDataBuilder::Option
flags QFormDataBuilder::Options
Opciones que controlan buildMultiPart().
Varias RFC actuales no están de acuerdo en cómo formatear exactamente multipart/form-data. En lugar de codificar cualquier RFC, estas opciones le dan el control sobre qué RFC seguir.
| Constante | Valor | Descripción |
|---|---|---|
QFormDataBuilder::Option::Default | 0x00 | Los valores por defecto, diseñados para maximizar la interoperabilidad en general. Todas las opciones nombradas a continuación están desactivadas. |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | Cuando el nombre de archivo de una parte-cuerpo contiene caracteres no-US-ASCII, la RFC 6266 Sección 4.3 sugiere usar codificación estilo RFC 8187(filename*=utf-8''...). El más reciente RFC 7578 Sección 4.2, sin embargo, prohíbe el uso de ese mecanismo. Ambas RFC están actualizadas en el momento de escribir este documento, por lo que esta opción le permite elegir cuál seguir. El valor predeterminado es incluir el filename* codificado según la RFC 8187 junto con el filename sin codificar, como sugiere la RFC 6266. |
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename | 0x02 | Cuando el nombre de archivo de una parte del cuerpo contiene caracteres que no son ASCII de EE.UU., la sección 4.2 de la RFC 7578 sugiere utilizar la codificación porcentual de los octetos del nombre de archivo codificado en UTF-8. A continuación, se indica que muchas implementaciones utilizan la codificación UTF-8 para el nombre de archivo. Continúa señalando que muchas implementaciones, sin embargo, no codifican porcentualmente el nombre de archivo codificado en UTF-8, sino que simplemente emiten UTF-8 "crudo" (con " y \ escapados usando \). Este es el valor por defecto de QFormDataBuilder, también. |
QFormDataBuilder::Option::PreferLatin1EncodedFilename | 0x04 | RFC 5987 Sección 3.2 requiere que los destinatarios soporten codificación ISO-8859-1 ("Latin-1"). Cuando el nombre de archivo de una parte del cuerpo contiene caracteres no-US-ASCII que, sin embargo, encajan en Latin-1, esta opción prefiere usar la codificación ISO-8859-1 sobre UTF-8. La más reciente {https://datatracker.ietf.org/doc/html/rfc8187#appendix-A}{RFC 8187} ya no requiere compatibilidad con ISO-8859-1, por lo que la opción predeterminada es enviar todos los nombres de archivo que no sean ASCII de EE.UU. con codificación UTF-8. |
QFormDataBuilder::Option::StrictRfc7578 | OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename | Esta opción combina otras opciones para seleccionar el cumplimiento estricto de RFC 7578. |
El tipo Options es un typedef para QFlags<Option>. Almacena una combinación OR de valores de opción.
Documentación de las funciones miembro
QFormDataBuilder::QFormDataBuilder()
Construye un objeto QFormDataBuilder vacío.
[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)
Move-construye una instancia de QFormDataBuilder, haciendo que apunte al mismo objeto al que apuntaba other.
[noexcept] QFormDataBuilder::~QFormDataBuilder()
Destruye el objeto QFormDataBuilder.
std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})
Construye y devuelve un puntero a un objeto QHttpMultipart construido según options.
Véase también QHttpMultiPart.
QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)
Devuelve un objeto QFormDataPartBuilder recién construido utilizando name como parámetro name de form-data. El objeto es válido mientras no se haya destruido el QFormDataBuilder asociado.
Se recomienda encarecidamente limitar los caracteres de name a US-ASCII por razones de interoperabilidad.
Véase también QFormDataPartBuilder y QHttpPart.
[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)
Mover-asigna other a esta instancia 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.