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 |
- 継承メンバを含むすべてのメンバの一覧
- QFormDataBuilder はNetwork Programming APIおよびImplicitly Shared Classes に含まれます。
パブリック型
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::Default | 0x00 | デフォルト値は、一般的に相互運用性を最大にするように設計されています。以下のオプションはすべてオフです。 |
QFormDataBuilder::Option::OmitRfc8187EncodedFilename | 0x01 | ボディパートのファイル名に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 | 0x02 | ボディパートのfile-nameがUS-ASCII以外の文字を含む場合、RFC 7578セクション4.2は、UTF-8エンコードされたfile-nameのオクテットのパーセントエンコーディングを使用することを提案している。しかし、多くの実装では、UTF-8エンコードされたファイル名をパーセントエンコードせず、「生の」UTF-8(" と\ は、\ を使ってエスケープされている)を出力している。これはQFormDataBuilder のデフォルトでもある。 |
QFormDataBuilder::Option::PreferLatin1EncodedFilename | 0x04 | RFC 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::StrictRfc7578 | OmitRfc8187EncodedFilename | 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 インスタンスに割り当てる。
© 2025 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.