很多教程并不可用,以下亲自测试可用;
接口要求为form-data,参数为captureLogJson,{"para1":"value1","para2","value2"}
QUrl url(urlStr);
QNetworkRequest request(url);
QFile file(fileName); //fileName为文件(这里是图片)名
qDebug()<<"fileName"<<fileName<<" "<< url;
if(!file.open(QIODevice::ReadOnly))
{
qDebug()<<"can not open file";
return;
}
QHttpMultiPart *multi_part = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data;name=\"captureLogJson\""));
textPart.setBody(ba); //ba为QByteArray,值为{"para1":"value1","para2","value2"}
QHttpPart image_part;
image_part.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpg")); //png格式为image/png
image_part.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QString("form-data; name=\"file\";filename=\"xxx.jpg\""))); //file固定值 xxx为可变值
const auto& data = file.readAll();
image_part.setBody(data);
image_part.setHeader(QNetworkRequest::ContentLengthHeader, QVariant(data.size()));
multi_part->append(image_part);
multi_part->append(textPart); //append的顺序取决于接口设计的顺序
QNetworkReply *reply = PostManager->post(request, multi_part);
multi_part->setParent(reply);