QFormDataBuilder Class

QFormDataBuilder 클래스는 QHttpMultiPart 객체의 구성을 단순화하기 위한 편의 클래스입니다. 더 보기...

Header: #include <QFormDataBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
이후: Qt 6.8

공용 형

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참조하세요 .

멤버 유형 문서

열거형 클래스 QFormDataBuilder::Option
플래그 QFormDataBuilder::옵션

buildMultiPart()를 제어하는 옵션.

현재 몇몇 RFC는 multipart/form-data 의 형식을 정확히 어떻게 지정해야 하는지에 대해 의견이 일치하지 않습니다. 이러한 옵션을 사용하면 하나의 RFC를 하드 코딩하는 대신 따를 RFC를 제어할 수 있습니다.

Constant설명
QFormDataBuilder::Option::Default0x00일반적으로 상호 운용성을 극대화하도록 설계된 기본값입니다. 아래에 명시된 모든 옵션은 꺼져 있습니다.
QFormDataBuilder::Option::OmitRfc8187EncodedFilename0x01본문 부분의 파일 이름에 US-ASCII가 아닌 문자가 포함된 경우 RFC 6266 섹션 4.3에서는 RFC 8187 스타일 인코딩(filename*=utf-8''...)을 사용하도록 권장합니다. 그러나 보다 최근의 RFC 7578 섹션 4.2에서는 해당 메커니즘의 사용을 금지하고 있습니다. 이 글을 쓰는 시점에서 두 RFC 모두 최신이므로 이 옵션을 사용하면 어느 쪽을 따를지 선택할 수 있습니다. 기본값은 RFC 8187에서 제안하는 대로 인코딩되지 않은 filename 과 함께 RFC 6266으로 인코딩된 filename* 을 포함하는 것입니다.
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename0x02본문 부분의 파일 이름에 US-ASCII가 아닌 문자가 포함된 경우 RFC 7578 섹션 4.2에서는 UTF-8로 인코딩된 파일 이름의 옥텟을 퍼센트 인코딩할 것을 제안합니다. 그러나 많은 구현에서는 UTF-8로 인코딩된 파일 이름을 퍼센트 인코딩하지 않고 그냥 "원시" UTF-8( "\\ 을 사용하여 이스케이프 처리)을 내보냅니다. QFormDataBuilder 의 기본값도 이와 같습니다.
QFormDataBuilder::Option::PreferLatin1EncodedFilename0x04RFC 5987 섹션 3.2에서는 수신자가 ISO-8859-1("Latin-1") 인코딩을 지원하도록 요구하고 있습니다. 본문 부분의 파일 이름에 라틴-1에 맞는 US-ASCII가 아닌 문자가 포함된 경우 이 옵션은 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::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename이 옵션은 다른 옵션과 결합하여 엄격한 RFC 7578 준수를 선택합니다.

옵션 유형은 QFlags<Option>에 대한 typedef입니다. 옵션 값의 OR 조합을 저장합니다.

멤버 함수 문서

QFormDataBuilder::QFormDataBuilder()

빈 QFormDataBuilder 객체를 생성합니다.

[noexcept] QFormDataBuilder::QFormDataBuilder(QFormDataBuilder &&other)

이동 - QFormDataBuilder 인스턴스를 생성하여 other 이 가리키고 있던 것과 동일한 객체를 가리키도록 합니다.

[noexcept] QFormDataBuilder::~QFormDataBuilder()

QFormDataBuilder 객체를 삭제합니다.

std::unique_ptr<QHttpMultiPart> QFormDataBuilder::buildMultiPart(QFormDataBuilder::Options options = {})

options 에 따라 구성된 QHttpMultipart 객체에 대한 포인터를 생성하고 반환합니다.

QHttpMultiPart도 참조하십시오 .

QFormDataPartBuilder QFormDataBuilder::part(QAnyStringView name)

name 을 양식 데이터의 name 매개변수로 사용하여 새로 구성된 QFormDataPartBuilder 객체를 반환합니다. 이 객체는 연결된 QFormDataBuilder 이 파괴되지 않는 한 유효합니다.

상호 운용성을 위해 name 문자를 US-ASCII로 제한하는 것이 좋습니다.

QFormDataPartBuilderQHttpPart참조하세요 .

[noexcept] QFormDataBuilder &QFormDataBuilder::operator=(QFormDataBuilder &&other)

이동-이 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.