このページでは

QFormDataBuilder Class

QFormDataBuilder クラスは、QHttpMultiPart オブジェクトの生成を簡略化するための利便性向上のためのクラスです。詳細...

ヘッダー: #include <QFormDataBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
以下のように: 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();

関連項目: QHttpPart 、QHttpMultiPart 、およびQFormDataPartBuilder 。

メンバ型のドキュメント

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の推奨に従い、エンコードされていないfilename のほかに、RFC 8187でエンコードされた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」)エンコーディングをサポートすることが求められています。 ボディパーツのファイル名に、US-ASCII 以外の文字が含まれているが、それらが Latin-1 に収まる場合、このオプションは UTF-8 よりも ISO-8859-1 エンコーディングの使用を優先します。 より新しい {https://datatracker.ietf.org/doc/html/rfc8187#付録 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)

QFormDataBuilderのインスタンスをムーブコンストラクタで生成し、other が指していたのと同じオブジェクトを指すようにします。

[noexcept] QFormDataBuilder::~QFormDataBuilder()

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

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

options に基づいて構築された QHttpMultipart オブジェクトへのポインタを生成し、返します。

QHttpMultiPartも参照してください 。

QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)

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

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

QFormDataPartBuilder およびQHttpPartも参照してください 。

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

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

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.