PySide6.QtNetwork.QHttpMultiPart

class QHttpMultiPart

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

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__([parent=None])
Parameters:

父对象QObject

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

另请参阅

ContentType

__init__(contentType[, parent=None])
Parameters:

构造一个QHttpMultiPart,内容类型为contentType,并将父对象设置为parent。

另请参阅

ContentType

append(httpPart)
Parameters:

httpPartQHttpPart

httpPart 附加到此多部分。

boundary()
Return type:

QByteArray

返回边界。

另请参阅

setBoundary()

setBoundary(boundary)
Parameters:

边界QByteArray

将边界设置为 boundary

通常,您不需要自己生成边界;在构造时,边界会以字符串“boundary_.oOo._”开头,后面跟着随机字符,这提供了足够的唯一性,以确保它不会出现在部分内容本身中。

另请参阅

boundary()

setContentType(contentType)
Parameters:

contentTypeContentType

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

另请参阅

ContentType post()