En esta página

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

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.

ConstanteValorDescripción
QFormDataBuilder::Option::Default0x00Los valores por defecto, diseñados para maximizar la interoperabilidad en general. Todas las opciones nombradas a continuación están desactivadas.
QFormDataBuilder::Option::OmitRfc8187EncodedFilename0x01Cuando 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::UseRfc7578PercentEncodedFilename0x02Cuando 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::PreferLatin1EncodedFilename0x04RFC 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::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilenameEsta 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.