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 |
- 継承メンバを含む全メンバのリスト
- 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 | ボディパートのファイル名がUS-ASCII以外の文字を含む場合、RFC 7578セクション4.2は、UTF-8エンコードされたファイル名のオクテットのパーセントエンコーディングを使用することを提案している。しかし、多くの実装は、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 インスタンスに割り当てます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。