QFormDataBuilder Class

QFormDataBuilder クラスは、QHttpMultiPart オブジェクトの構築を簡素化するための便利なクラスです。詳細...

Header: #include <QFormDataBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Since: Qt 6.8

パブリック型

enum class Option { Default, OmitRfc8187EncodedFilename, UseRfc7578PercentEncodedFilename, PreferLatin1EncodedFilename, StrictRfc7578 }
flags Options

パブリック関数

QFormDataBuilder()
QFormDataBuilder(QFormDataBuilder &&other)
~QFormDataBuilder()
std::unique_ptr<QHttpMultiPart> buildMultiPart(QFormDataBuilder::Options options = {})
QFormDataPartBuilder part(QAnyStringView name)
QFormDataBuilder &operator=(QFormDataBuilder &&other)

詳細説明

QFormDataBuilder クラスは、デフォルトで FormDataType に設定されたコンテント・タイプを持つQHttpMultiPart オブジェクトを構築するために使用できます。

以下のスニペットは、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();

QHttpPartQHttpMultiPartQFormDataPartBuilderも参照してください

メンバ・タイプのドキュメント

enum class QFormDataBuilder::Option
flags QFormDataBuilder::Options

buildMultiPart() を制御するオプション。

現在のいくつかの RFC は、multipart/form-data を正確にどのようにフォーマットするかについて意見が分かれています。どれか一つの RFC をハードコーディングする代わりに、これらのオプションでどの RFC に従うかを制御できます。

定数説明
QFormDataBuilder::Option::Default0x00デフォルト値は、一般的に相互運用性を最大にするように設計されています。以下のオプションはすべてオフです。
QFormDataBuilder::Option::OmitRfc8187EncodedFilename0x01ボディパートのファイル名にUS-ASCII以外の文字が含まれる場合、RFC 6266セクション4.3はRFC 8187スタイルのエンコーディング(filename*=utf-8''...)を使用することを提案している。しかし、より最近のRFC 7578セクション4.2では、このメカニズムの使用を禁止している。どちらのRFCもこの文章を書いている時点では最新なので、このオプショ ンでどちらに従うかを選択することができる。デフォルトは、RFC 6266で提案されているように、RFC 8187でエンコードされたfilename* を、エンコードされていないfilename と一緒に含めることである。
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename0x02ボディパートのファイル名がUS-ASCII以外の文字を含む場合、RFC 7578セクション4.2は、UTF-8エンコードされたファイル名のオクテットのパーセントエンコーディングを使用することを提案している。しかし、多くの実装は、UTF-8エンコードされたファイル名をパーセントエンコードせず、「生の」UTF-8("\ は、\ を使ってエスケープされている)を出力している。これはQFormDataBuilder のデフォルトでもある。
QFormDataBuilder::Option::PreferLatin1EncodedFilename0x04RFC 5987セクション3.2は、受信者がISO-8859-1("Latin-1")エンコードをサポートすることを要求した。body-partのfile-nameが非US-ASCII文字を含み、それがLatin-1に適合する場合、このオプションは、UTF-8よりもISO-8859-1エンコーディングの使用を優先する。より最近の{https://datatracker.ietf.org/doc/html/rfc8187#appendix-A}{RFC 8187}ではISO-8859-1のサポートは要求されなくなったので、デフォルトでは代わりにすべての非US-ASCIIファイル名をUTF-8エンコーディングで送信します。
QFormDataBuilder::Option::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilenameこ のオプシ ョ ンは他のオプシ ョ ン と 組み合わせて厳密なRFC 7578準拠を選択 し ます。

Options型はQFlags<Option>のtypedefです。Option値のORの組み合わせを格納します。

メンバ関数の説明

QFormDataBuilder::QFormDataBuilder()

空の QFormDataBuilder オブジェクトを構築する。

[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)

Move - QFormDataBuilder インスタンスを構築し、other が指していたのと同じオブジェクトを指すようにする。

[noexcept] QFormDataBuilder::~QFormDataBuilder()

QFormDataBuilder オブジェクトを破棄します。

std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})

options に従って構築された QHttpMultipart オブジェクトへのポインタを構築して返します。

QHttpMultiPartも参照してください

QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)

name を form-data のname パラメータとして使用して新しく構築されたQFormDataPartBuilder オブジェクトを返します。このオブジェクトは、関連するQFormDataBuilder が破棄されていない限り有効です。

相互運用性の観点から、name の文字を US-ASCII に限定することを強く推奨する

QFormDataPartBuilder およびQHttpPartも参照のこと

[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)

Move -other をこのQFormDataBuilder インスタンスに割り当てます。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。