QHttpMultiPart 类
QHttpMultiPart 类类似于要发送到 HTTP 的 MIME 多部分消息。 更多...
头 | #include <QHttpMultiPart> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
继承 | QObject |
- 所有成员列表,包括继承的成员
- QHttpMultiPart 是网络编程 API 的一部分。网络编程 API.
公共类型
枚举 | ContentType { MixedType, RelatedType, FormDataType, AlternativeType } |
公共函数
QHttpMultiPart(QObject *parent = nullptr) | |
QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr) | |
virtual | ~QHttpMultiPart() |
void | append(const QHttpPart &httpPart) |
QByteArray | boundary() const |
void | setBoundary(const QByteArray &boundary) |
void | setContentType(QHttpMultiPart::ContentType contentType) |
详细描述
QHttpMultiPart 类类似于在 RFC 2046 中描述的 MIME 多部分消息,计划通过 HTTP 发送。一个多部分消息包含任意数量的正文部分(见 QHttpPart),这些部分通过一个唯一的边界分隔。QHttpMultiPart 的边界由字符串 "boundary_.oOo._" 后跟随机字符构成,确保其自身内部不会发生。如果需要,仍然可以通过 setBoundary() 来设置边界。
例如,以下代码片段构建了一个包含文本部分和图像部分的多部分消息:
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\"")); textPart.setBody("my text"); QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\"")); QFile *file = new QFile("image.jpg"); file->open(QIODevice::ReadOnly); imagePart.setBodyDevice(file); file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart multiPart->append(textPart); multiPart->append(imagePart); QUrl url("http://my.server.tld"); QNetworkRequest request(url); QNetworkAccessManager manager; QNetworkReply *reply = manager.post(request, multiPart); multiPart->setParent(reply); // delete the multiPart with the reply // here connect signals etc.
另请参阅 QHttpPart 和 QNetworkAccessManager::post().
成员类型文档
enum QHttpMultiPart::ContentType
在 RFC 2046 中描述的已知多部分内容类型列表和其他描述。
常量 | 值 | 描述 |
---|---|---|
QHttpMultiPart::MixedType | 0 | 对应于 "multipart/mixed" 子类型,表示正文部分相互独立,如 RFC 2046 中所述。 |
QHttpMultiPart::RelatedType | 1 | 对应于 "multipart/related" 子类型,表示正文部分相互关联,如 RFC 2387 中所述。 |
QHttpMultiPart::FormDataType | 2 | 对应于 "multipart/form-data" 子类型,表示正文部分包含表单元素,如 RFC 2388 中所述。 |
QHttpMultiPart::AlternativeType | 3 | 对应于 "multipart/alternative" 子类型,意味着正文部分是对相同信息的不同表示,如RFC 2046中所述。 |
另请参阅 setContentType().
成员函数文档
[显式]
QHttpMultiPart::QHttpMultiPart(QObject *parent = nullptr)
构建类型为 MixedType 的 QHttpMultiPart 并将 parent 设置为父对象。
另请参阅 QHttpMultiPart::ContentType.
[显式]
QHttpMultiPart::QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)
构建类型为 contentType 的 QHttpMultiPart 并将父对象设置为 parent。
另请参阅 QHttpMultiPart::ContentType.
[虚拟 noexcept]
QHttpMultiPart::~QHttpMultiPart()
销毁多部分。
void QHttpMultiPart::append(const QHttpPart &httpPart)
将 httpPart 添加到此多部分。
QByteArray QHttpMultiPart::boundary() const
返回边界。
另请参阅 setBoundary().
void QHttpMultiPart::setBoundary(const QByteArray &boundary)
设置边界为 boundary。
通常,您不需要自己生成边界;构造时,边界以字符串 "boundary_.oOo._" 开始,后跟随机字符,并提供足够的唯一性,以确保它不会出现在部分内部。
另请参阅 boundary().
void QHttpMultiPart::setContentType(QHttpMultiPart::ContentType contentType)
设置内容类型为 contentType。当通过 QNetworkAccessManager::post() 发送多部分消息时将在HTTP头部部分使用内容类型。如果您想使用不属于 QHttpMultiPart::ContentType 的多部分子类型,您可以手动将 "Content-Type" 标头字段添加到 QNetworkRequest,然后使用此请求与多部分消息一起发布。
另请参阅 QHttpMultiPart::ContentType 和 QNetworkAccessManager::post().
© 2024 Qt公司有限公司。本文档中的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 下的条款许可的。Qt及其标志是芬兰的Qt公司有限公司及其它国家/地区的商标。所有其他商标归其各自所有者所有。