QFormDataPartBuilder Class

The QFormDataPartBuilder class is a convenience class to simplify the construction of QHttpPart objects. More...

Header: #include <QFormDataPartBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Since: Qt 6.8

Public Functions

QFormDataPartBuilder(const QFormDataPartBuilder &other)
QFormDataPartBuilder(QFormDataPartBuilder &&other)
~QFormDataPartBuilder()
QFormDataPartBuilder setBody(QByteArrayView data, QAnyStringView fileName = {}, QAnyStringView mimeType = {})
QFormDataPartBuilder setBodyDevice(QIODevice *body, QAnyStringView fileName = {}, QAnyStringView mimeType = {})
QFormDataPartBuilder setHeaders(const QHttpHeaders &headers)
QFormDataPartBuilder &operator=(QFormDataPartBuilder &&other)
QFormDataPartBuilder &operator=(const QFormDataPartBuilder &other)

Detailed Description

The QFormDataPartBuilder class can be used to build a QHttpPart object with the content disposition header set to be form-data by default. Then the generated object can be used as part of a multipart message (which is represented by the QHttpMultiPart class).

See also QHttpPart, QHttpMultiPart, and QFormDataBuilder.

Member Function Documentation

[default] QFormDataPartBuilder::QFormDataPartBuilder(const QFormDataPartBuilder &other)

Constructs a copy of other. The object is valid for as long as the associated QFormDataBuilder has not been destroyed.

The data of the copy is shared (shallow copy): modifying one part will also change the other.

 QFormDataPartBuilder foo()
 {
     QFormDataBuilder builder;
     auto qfdpb1 = builder.part("First"_L1);
     auto qfdpb2 = qfdpb1; // this creates a shallow copy

     qfdpb2.setBodyDevice(&image, "cutecat.jpg"); // qfdpb1 is also modified

     return qfdbp2;  // invalid, builder is destroyed at the end of the scope
 }

[noexcept default] QFormDataPartBuilder::QFormDataPartBuilder(QFormDataPartBuilder &&other)

Move-constructs a QFormDataPartBuilder instance, making it point at the same object that other was pointing to.

[noexcept default] QFormDataPartBuilder::~QFormDataPartBuilder()

Destroys the QFormDataPartBuilder object.

QFormDataPartBuilder QFormDataPartBuilder::setBody(QByteArrayView data, QAnyStringView fileName = {}, QAnyStringView mimeType = {})

Sets data as the body of this MIME part and, if given, fileName as the file name parameter in the content disposition header.

If mimeType is not given (is empty), then QFormDataPartBuilder tries to auto-detect the mime-type of data using QMimeDatabase.

A subsequent call to setBodyDevice() discards the body and the device will be used instead.

For a large amount of data (e.g. an image), setBodyDevice() is preferred, which will not copy the data internally.

See also setBodyDevice().

QFormDataPartBuilder QFormDataPartBuilder::setBodyDevice(QIODevice *body, QAnyStringView fileName = {}, QAnyStringView mimeType = {})

Sets body as the body device of this part and fileName as the file name parameter in the content disposition header.

If mimeType is not given (is empty), then QFormDataPartBuilder tries to auto-detect the mime-type of body using QMimeDatabase.

A subsequent call to setBody() discards the body device and the data set by setBody() will be used instead.

For large amounts of data this method should be preferred over setBody(), because the content is not copied when using this method, but read directly from the device.

body must be open and readable. QFormDataPartBuilder does not take ownership of body, i.e. the device must be closed and destroyed if necessary.

Note: If body is sequential (e.g. sockets, but not files), QNetworkAccessManager::post() should be called after body has emitted finished().

See also setBody() and QHttpPart::setBodyDevice().

QFormDataPartBuilder QFormDataPartBuilder::setHeaders(const QHttpHeaders &headers)

Sets the headers specified in headers.

Note: The "content-type" and "content-disposition" headers, if any are specified in headers, will be overwritten by the class.

[default] QFormDataPartBuilder &QFormDataPartBuilder::operator=(QFormDataPartBuilder &&other)

Move-assigns other to this QFormDataPartBuilder instance.

[default] QFormDataPartBuilder &QFormDataPartBuilder::operator=(const QFormDataPartBuilder &other)

Assigns other to QFormDataPartBuilder and returns a reference to this QFormDataPartBuilder. The object is valid for as long as the associated QFormDataBuilder has not been destroyed.

The data of the copy is shared (shallow copy): modifying one part will also change the other.

 QFormDataPartBuilder foo()
 {
     QFormDataBuilder builder;
     auto qfdpb1 = builder.part("First"_L1);
     auto qfdpb2 = qfdpb1; // this creates a shallow copy

     qfdpb2.setBodyDevice(&image, "cutecat.jpg"); // qfdpb1 is also modified

     return qfdbp2;  // invalid, builder is destroyed at the end of the scope
 }