PySide6.QtNetwork.QFormDataBuilder

class QFormDataBuilder

QFormDataBuilder 类是一个便利类,用于简化 QHttpMultiPart 对象的构建。更多

在版本6.8中添加。

概要

方法

注意

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

详细描述

QFormDataBuilder 类可用于构建一个 QHttpMultiPart 对象,默认情况下内容类型设置为 FormDataType。

下面的代码片段展示了如何使用QFormDataBuilder构建多部分消息:

QFormDataBuilder builder;
QFile image(u"../../pic.png"_s); image.open(QFile::ReadOnly);
QFile mask(u"../../mask.png"_s); mask.open(QFile::ReadOnly);

builder.part("image"_L1).setBodyDevice(&image, "the actual image");
builder.part("mask"_L1).setBodyDevice(&mask, "the mask image");
builder.part("prompt"_L1).setBody("Lobster wearing a beret");
builder.part("n"_L1).setBody("2");
builder.part("size"_L1).setBody("512x512");

std::unique_ptr<QHttpMultiPart> mp = builder.buildMultiPart();
class Option

(继承自 enum.Flag) 控制 buildMultiPart() 的选项。

当前的几个RFC在如何精确格式化multipart/form-data上存在分歧。这些选项让你可以控制遵循哪个RFC,而不是硬编码任何一个RFC。

常量

描述

QFormDataBuilder.Option.Default

默认值,旨在最大化一般互操作性。下面列出的所有选项都是关闭的。

QFormDataBuilder.Option.OmitRfc8187EncodedFilename

当主体部分的文件名包含非US-ASCII字符时,RFC 6266 第4.3节建议使用RFC 8187风格的编码(filename*=utf-8''...)。然而,较新的RFC 7578 第4.2节禁止使用该机制。截至本文撰写时,这两个RFC都是现行的,因此此选项允许您选择遵循哪一个。默认情况下,按照RFC 6266的建议,包含RFC 8187编码的filename*以及未编码的filename

QFormDataBuilder.Option.UseRfc7578PercentEncodedFilename

当主体部分的文件名包含非US-ASCII字符时,RFC 7578 第4.2节建议使用UTF-8编码文件名的八位字节的百分比编码。它进一步指出,许多实现实际上对UTF-8编码的文件名进行百分比编码,而是直接发出“原始”UTF-8(使用"\通过\进行转义)。这也是QFormDataBuilder的默认行为。

QFormDataBuilder.Option.PreferLatin1EncodedFilename

RFC 5987 第3.2节要求接收方支持ISO-8859-1(“Latin-1”)编码。当主体部分的文件名包含非US-ASCII字符,但这些字符适合Latin-1时,此选项倾向于使用ISO-8859-1编码而不是UTF-8。较新的{https://datatracker.ietf.org/doc/html/rfc8187#appendix-A}{RFC 8187}不再要求支持ISO-8859-1,因此默认情况下,所有非US-ASCII文件名都以UTF-8编码发送。

QFormDataBuilder.Option.StrictRfc7578

此选项结合其他选项以选择严格的RFC 7578合规性。

__init__()

构造一个空的 QFormDataBuilder 对象。

part(name)
Parameters:

name – str

Return type:

QFormDataPartBuilder

返回一个新构建的QFormDataPartBuilder对象,使用name作为表单数据的name参数。只要关联的QFormDataBuilder未被销毁,该对象就有效。

出于互操作性考虑,强烈建议将name字符限制为US-ASCII。

swap(other)
Parameters:

其他QFormDataBuilder