このページでは

QHttpMultiPart Class

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

ヘッダー: #include <QHttpMultiPart>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
継承元: 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 に記述されている、HTTP 経由で送信される MIME マルチパートメッセージに似ています。マルチパートメッセージは、一意の境界で区切られた任意の数のボディパート(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::MixedType0RFC 2046 に記載されているように、「multipart/mixed」サブタイプに対応し、ボディの各パートが互いに独立していることを意味します。
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()

multipart を削除します。

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::ContentType およびQNetworkAccessManager::post()も参照してください 。

© 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.