QFormDataPartBuilder Class
QFormDataPartBuilder 类是一个便利类,用于简化QHttpPart 对象的创建。更多内容...
| 头文件: | #include <QFormDataPartBuilder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| 自: | Qt 6.8 |
- 所有成员列表,包括继承的成员
- QFormDataPartBuilder 属于网络编程 API 和隐式共享类。
公共函数
| QFormDataPartBuilder() | |
| 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) |
详细描述
QFormDataPartBuilder 类可用于构建一个默认将内容处置标头设置为表单数据的QHttpPart 对象。随后,生成的对象可作为多部分消息(由QHttpMultiPart 类表示)的一部分使用。
另请参阅 QHttpPart 、QHttpMultiPart 和QFormDataBuilder 。
成员函数文档
[constexpr noexcept default] QFormDataPartBuilder::QFormDataPartBuilder()
默认——构造一个QFormDataPartBuilder 的实例。
[implicit] QFormDataPartBuilder::QFormDataPartBuilder(const QFormDataPartBuilder &other)
创建other 的副本。只要关联的QFormDataBuilder 尚未被销毁,该对象就一直有效。
该副本的数据是共享的(浅拷贝):修改其中一部分也会导致另一部分发生变化。
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 implicit] QFormDataPartBuilder::QFormDataPartBuilder(QFormDataPartBuilder &&other)
通过“move”操作构造一个 QFormDataPartBuilder 实例,使其指向与other 所指向的同一对象。
[noexcept implicit] QFormDataPartBuilder::~QFormDataPartBuilder()
销毁QFormDataPartBuilder 对象。
QFormDataPartBuilder QFormDataPartBuilder::setBody(QByteArrayView data, QAnyStringView fileName = {}, QAnyStringView mimeType = {})
将data 设置为此 MIME 部分的正文,如果提供了fileName ,则将其作为 content-disposition 头中的文件名参数。
如果未提供mimeType (即为空),则QFormDataPartBuilder 将尝试使用QMimeDatabase 自动检测data 的 MIME 类型。
随后对setBodyDevice() 的调用将丢弃正文,转而使用设备。
对于大量数据(例如图像),建议使用setBodyDevice(),该方法不会在内部复制数据。
另请参阅 setBodyDevice()。
QFormDataPartBuilder QFormDataPartBuilder::setBodyDevice(QIODevice *body, QAnyStringView fileName = {}, QAnyStringView mimeType = {})
将body 设置为此部分的主体设备,并将fileName 设置为内容处置标头中的文件名参数。
如果未提供mimeType (即为空),则QFormDataPartBuilder 将尝试使用QMimeDatabase 自动检测body 的 MIME 类型。
随后对setBody() 的调用将丢弃正文设备,并改用setBody() 设置的数据。
对于大量数据,应优先使用此方法,而不是setBody(),因为使用此方法时不会复制内容,而是直接从设备读取。
body 必须已打开且可读。QFormDataPartBuilder 不会接管body 的所有权,也就是说,如有必要,必须关闭并销毁该设备。
注意:如果 body 是顺序的(例如套接字,但不包括文件),则应在body 发出 finished() 信号后调用QNetworkAccessManager::post()。
另请参阅 setBody() 和QHttpPart::setBodyDevice()。
QFormDataPartBuilder QFormDataPartBuilder::setHeaders(const QHttpHeaders &headers)
设置headers 中指定的头部字段。
注意: 如果headers 中指定了“content-type”和“content-disposition”标头(如有),则会被该类覆盖。
[implicit] QFormDataPartBuilder &QFormDataPartBuilder::operator=(QFormDataPartBuilder &&other)
将other 通过Move操作赋值给此QFormDataPartBuilder 实例。
[implicit] QFormDataPartBuilder &QFormDataPartBuilder::operator=(const QFormDataPartBuilder &other)
将other 赋值给QFormDataPartBuilder ,并返回对该QFormDataPartBuilder 的引用。只要关联的QFormDataBuilder 尚未被销毁,该对象就一直有效。
复制的数据是共享的(浅拷贝):修改其中一部分也会改变另一部分。
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
}© 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.