class QHttpMultiPart#

QHttpMultiPart 类似于要发送到HTTP的MIME多部分消息。 更多

Inheritance diagram of PySide6.QtNetwork.QHttpMultiPart

概要#

方法#

注意

本文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译中存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式来通知我们

详细描述#

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

QHttpMultiPart 具有类似于RFC 2046中描述的MIME多部分消息的形式,用于通过HTTP发送。一个多部分消息由任意数量的文体(请参见QHttpPart)组成,这些文体由一个唯一的边界隔开。QHttpMultiPart 的边界是通过字符串“boundary_.oOo._”后跟随机字符构造的,提供足够的唯一性以确保它不会出现在文体内部。如果需要,边界仍然可以通过 setBoundary() 来设置。

以下是一个示例代码片段,它构建了一个包含文本部分后面跟着图像部分的多部分消息:

multiPart = QHttpMultiPart(QHttpMultiPart.FormDataType)
textPart = QHttpPart()
textPart.setHeader(QNetworkRequest.ContentDispositionHeader, QVariant("form-data; name=\"text\""))
textPart.setBody("my text")
imagePart = QHttpPart()
imagePart.setHeader(QNetworkRequest.ContentTypeHeader, QVariant("image/jpeg"))
imagePart.setHeader(QNetworkRequest.ContentDispositionHeader, QVariant("form-data; name=\"image\""))
file = 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)
url = QUrl("http://my.server.tld")
request = QNetworkRequest(url)
manager = QNetworkAccessManager()
reply = manager.post(request, multiPart)
multiPart.setParent(reply) # delete the multiPart with the reply
# here connect signals etc.

另请参阅

QHttpPart post()

class ContentType#

已知的内容类型列表,如RFC 2046和其他文档中定义的多部分子类型。

常量

描述

QHttpMultiPart.MixedType

对应于“multipart/mixed”子类型,表示文体之间相互独立,如RFC 2046中所述。

QHttpMultiPart.RelatedType

对应于“multipart/related”子类型,表示文体之间相互关联,如RFC 2387中所述。

QHttpMultiPart.FormDataType

对应于“multipart/form-data”子类型,表示文体包含表单元素,如RFC 2388中所述。

QHttpMultiPart.AlternativeType

对应于“multipart/alternative”子类型,表示文体是相同信息的不同表示形式,如RFC 2046中所述。

另请参阅

setContentType()

__init__(contentType[, parent=None])#
参数:

构造一个具有内容类型 contentTypeQHttpMultiPart,并将父对象设置为父对象。

另请参阅

ContentType

__init__([parent=None])
参数:

parentQObject

构造一个具有内容类型 MixedTypeQHttpMultiPart,并将父对象设置为父对象。

另请参阅

ContentType

append(httpPart)
参数:

httpPartQHttpPart

httpPart 追加到此多部分中。

boundary()
返回类型::

QByteArray

返回边界。

另请参阅

setBoundary()

setBoundary(boundary)
参数:

boundaryQByteArray

将边界设置为 boundary

通常,您不需要自己生成边界;在构造时,边界会初始化为字符串“boundary_.oOo._”后跟随机字符,并提供足够的不确定性,以确保它不会出现在各部分内部。

另请参阅

boundary()

setContentType(contentType)
参数:

contentTypeContentType

将内容类型设置为 contentType。在通过 post() 通过 HTTP 发送多部分消息时,将使用内容类型在 HTTP 头部部分。如果您想使用不在 ContentType 中的多部分子类型,您可以手动将“Content-Type”头字段添加到 QNetworkRequest 中,然后使用此请求和多部分消息一起发送。

另请参阅

ContentType post()