247 const QString contentTypeLower = contentType.toLower();
253 const QByteArray processedData = QByteArray(data).replace(
'+',
' ');
255 QListIterator<QStringPair> i(QUrlQuery(processedData).queryItems(QUrl::FullyDecoded));
271 const QLatin1String boundaryFieldName(
"boundary=");
272 const int idx = contentType.indexOf(boundaryFieldName);
275 qWarning() << Q_FUNC_INFO <<
"Could not find boundary in multipart/form-data header!";
279 const QByteArray delimiter =
Utils::String::unquote(QStringView(contentType).mid(idx + boundaryFieldName.size())).toLatin1();
280 if (delimiter.isEmpty())
282 qWarning() << Q_FUNC_INFO <<
"boundary delimiter field empty!";
287 const QByteArray dashDelimiter = QByteArray(
"--") + delimiter +
CRLF;
288 QVector<QByteArray> multipart =
splitToViews(data, dashDelimiter, Qt::SkipEmptyParts);
289 if (multipart.isEmpty())
291 qWarning() << Q_FUNC_INFO <<
"multipart empty";
296 const QByteArray endDelimiter = QByteArray(
"--") + delimiter + QByteArray(
"--") +
CRLF;
299 return std::all_of(multipart.cbegin(), multipart.cend(), [
this](
const QByteArray &part)
301 return this->parseFormData(part);
305 qWarning() << Q_FUNC_INFO <<
"unknown content type:" << contentType;
const char CONTENT_TYPE_FORM_ENCODED[]
const char CONTENT_TYPE_FORM_DATA[]
QPair< QString, QString > QStringPair