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 |
- 継承メンバを含むすべてのメンバの一覧
- QHttpMultiPart はNetwork Programming API に含まれています。
パブリック型
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::MixedType | 0 | は "multipart/mixed "サブタイプに対応し、RFC 2046で記述されているように、ボディ部分が互いに独立していることを意味する。 |
QHttpMultiPart::RelatedType | 1 | は "multipart/related "サブタイプに対応し、RFC 2387で述べられているように、ボディ部分が互いに関連していることを意味する。 |
QHttpMultiPart::FormDataType | 2 | は "multipart/form-data "サブタイプに対応し、RFC 2388で述べられているように、ボディ部分がフォーム要素を含むことを意味する。 |
QHttpMultiPart::AlternativeType | 3 | は "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::ContentType とQNetworkAccessManager::post()も参照してください 。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。