QT 通过http接口上传图片及参数

很多教程并不可用,以下亲自测试可用;

接口要求为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);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值