QHttpMultiPart Class

QHttpMultiPart クラスは、HTTP で送信される MIME マルチパートメッセージに似ています。詳細...

Header: #include <QHttpMultiPart>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Inherits: QObject

パブリック型

enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType }

パブリック関数

QHttpMultiPart(QObject *parent = nullptr)
QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)
virtual ~QHttpMultiPart()
void append(const QHttpPart &httpPart)
QByteArray boundary() const
void setBoundary(const QByteArray &boundary)
void setContentType(QHttpMultiPart::ContentType contentType)

詳細説明

QHttpMultiPart は、RFC 2046 で記述されている MIME マルチパートメッセージに似ており、HTTP で送信されます。マルチパートメッセージは、一意の境界で区切られた任意の数のボディパート (QHttpPart を参照) から構成されます。QHttpMultiPart の境界は、"boundary_.oOo._" という文字列の後にランダムな文字が続くことで構成され、パート自身の内部で発生しないように十分な一意性を提供します。必要であれば、setBoundary ()を使って境界を設定することもできる。

例として、以下のコード・スニペットを考えてみましょう。このコードは、テキスト・パートに続いてイメージ・パートを含むマルチパート・メッセージを構築します:

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
textPart.setBody("my text");

QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\""));
QFile *file = new QFile("image.jpg");
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart

multiPart->append(textPart);
multiPart->append(imagePart);

QUrl url("http://my.server.tld");
QNetworkRequest request(url);

QNetworkAccessManager manager;
QNetworkReply *reply = manager.post(request, multiPart);
multiPart->setParent(reply); // delete the multiPart with the reply
// here connect signals etc.

QHttpPart およびQNetworkAccessManager::post()も参照

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

enum QHttpMultiPart::ContentType

RFC 2046 などに記述されている、マルチパートのサブタイプの既知のコンテントタイプのリスト。

定数説明
QHttpMultiPart::MixedType0は "multipart/mixed "サブタイプに対応し、RFC 2046で記述されているように、ボディ部分が互いに独立していることを意味する。
QHttpMultiPart::RelatedType1は "multipart/related "サブタイプに対応し、RFC 2387で述べられているように、ボディ部分が互いに関連していることを意味する。
QHttpMultiPart::FormDataType2は "multipart/form-data "サブタイプに対応し、RFC 2388で述べられているように、ボディ部分がフォーム要素を含むことを意味する。
QHttpMultiPart::AlternativeType3は "multipart/alternative "サブタイプに対応し、RFC 2046で述べられているように、ボディパーツが同じ情報の代替表現であることを意味する。

setContentType()も参照

メンバ関数のドキュメント

[explicit] QHttpMultiPart::QHttpMultiPart(QObject *parent = nullptr)

コンテントタイプがMixedType の QHttpMultiPart を構築し、親オブジェクトとしてparent を設定します。

QHttpMultiPart::ContentTypeも参照して ください。

[explicit] QHttpMultiPart::QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent = nullptr)

コンテンツ・タイプがcontentType の QHttpMultiPart を構築し、 parent を親オブジェクトとして設定します。

QHttpMultiPart::ContentTypeも参照して ください。

[virtual noexcept] QHttpMultiPart::~QHttpMultiPart()

マルチパートを破棄します。

void QHttpMultiPart::append(const QHttpPart &httpPart)

このマルチパートにhttpPart を追加します。

QByteArray QHttpMultiPart::boundary() const

境界を返します。

setBoundary()も参照して ください。

void QHttpMultiPart::setBoundary(const QByteArray &boundary)

境界をboundary に設定します。

通常、境界を自分で生成する必要はありません。構築時に、境界は文字列 "boundary_.oOo._" に続くランダムな文字で開始され、パーツ自身の内部で発生しないように十分な一意性を提供します。

boundary()も参照のこと

void QHttpMultiPart::setContentType(QHttpMultiPart::ContentType contentType)

コンテント・タイプをcontentType に設定します。このコンテント・タイプは、QNetworkAccessManager::post() 経由でマルチパート・メッセージを送信する際の HTTP ヘッダー・セクションで使用されます。QHttpMultiPart::ContentType に含まれないマルチパートのサブタイプを使いたい場合は、QNetworkRequest に "Content-Type "ヘッダーフィールドを手で追加し、投稿用のマルチパート メッセージとともにこのリクエストを使うことができる。

QHttpMultiPart::ContentTypeQNetworkAccessManager::post()も参照してください

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