이 페이지에서

QFormDataBuilder Class

QFormDataBuilder 클래스는 ` QHttpMultiPart ` 객체의 생성을 간소화하기 위한 편의 클래스입니다. 더 보기...

헤더: #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도 참조하십시오 .

멤버 유형 문서

enum class QFormDataBuilder::Option
flags QFormDataBuilder::Options

buildMultiPart()를 제어하는 옵션들.

현재 여러 RFC에서 multipart/form-data 의 정확한 서식 지정 방법에 대해 의견이 분분합니다. 특정 RFC를 고정적으로 적용하는 대신, 이 옵션을 통해 어떤 RFC를 따를지 직접 제어할 수 있습니다.

상수값설명
QFormDataBuilder::Option::Default0x00일반적인 상호 운용성을 극대화하도록 설계된 기본값입니다. 아래에 명시된 모든 옵션은 비활성화되어 있습니다.
QFormDataBuilder::Option::OmitRfc8187EncodedFilename0x01본문 부분(body-part)의 파일 이름에 US-ASCII가 아닌 문자가 포함된 경우, RFC 6266 섹션 4.3에서는 RFC 8187 스타일의 인코딩(filename*=utf-8''...)을 사용할 것을 권장합니다. 그러나 더 최근의 RFC 7578 섹션 4.2에서는 해당 메커니즘의 사용을 금지하고 있습니다. 이 글을 작성하는 시점에서 두 RFC 모두 유효하므로, 이 옵션을 통해 어느 표준을 따를지 선택할 수 있습니다. 기본 설정은 RFC 6266의 권고에 따라, 인코딩되지 않은 filename 파일과 함께 RFC 8187 방식으로 인코딩된 filename* 파일을 포함하는 것입니다.
QFormDataBuilder::Option::UseRfc7578PercentEncodedFilename0x02바디 파트의 파일 이름에 US-ASCII가 아닌 문자가 포함된 경우, RFC 7578 4.2절에서는 UTF-8로 인코딩된 파일 이름의 옥텟을 퍼센트 인코딩할 것을 권장합니다. 그러나 많은 구현체에서는 UTF-8로 인코딩된 파일 이름을 퍼센트 인코딩하지 않고, 단순히 "원시" UTF-8을 출력하며( " 와 \ 는 \ 를 사용하여 이스케이프 처리됨), 이를 RFC 7578 섹션 4.2에서도 언급하고 있습니다. 이는 QFormDataBuilder 의 기본값이기도 합니다.
QFormDataBuilder::Option::PreferLatin1EncodedFilename0x04RFC 5987 3.2절에서는 수신자가 ISO-8859-1("Latin-1") 인코딩을 지원해야 한다고 규정하고 있습니다. 본문 부분(body-part)의 파일 이름에 US-ASCII가 아닌 문자가 포함되어 있더라도 Latin-1에 포함되는 경우, 이 옵션은 UTF-8보다 ISO-8859-1 인코딩을 우선적으로 사용합니다. 최근의 {https://datatracker.ietf.org/doc/html/rfc8187#부록 A}{RFC 8187}에서는 더 이상 ISO-8859-1 지원을 요구하지 않으므로, 기본적으로 모든 비 US-ASCII 파일 이름은 UTF-8 인코딩으로 전송됩니다.
QFormDataBuilder::Option::StrictRfc7578OmitRfc8187EncodedFilename | UseRfc7578PercentEncodedFilename이 옵션은 다른 옵션들을 결합하여 RFC 7578을 엄격하게 준수하도록 선택합니다.

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

멤버 함수 문서

QFormDataBuilder::QFormDataBuilder()

빈 QFormDataBuilder 객체를 생성합니다.

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

QFormDataBuilder 인스턴스를 move-construct 방식으로 생성하여, 이 인스턴스가 ` 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로 제한할 것을 강력히 권장합니다.

QFormDataPartBuilder 및 QHttpPart도 참조하십시오 .

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

other 를 이 QFormDataBuilder 인스턴스에 할당합니다.

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