QT以POST方法上传文件(文本、图片、excel文件等)

最近项目需要用QT上传文件给HTTP服务器。之前服务器接收的数据格式都是json,这次是form-data。
经查找资料,需要用到QHttpMultiPart和QHttpPart这两个类,看QT的实例教程可知

在这里插入图片描述
例程中给出了文本和图片的传输方式,本次主要记录下exce文件的代码

     QString xlname = "text.xlsx";
     QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
     QHttpPart imagePart;
     imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/xlsx"));
     imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\""+ xlname + "\"")); // file为后端定义的key,filename即为excel文件名

     QFile *file = new QFile(pathbuf1);//pathbuf1 为文件路径
     file->open(QIODevice::ReadOnly);
     imagePart.setBodyDevice(file);
     file->setParent(multiPart); 
     multiPart->append(imagePart);

     QUrl url("http://xxxxxxxxxx");
     QNetworkRequest netReq;
     netReq.setUrl(url);
     connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(send_xlsdata(QNetworkReply*)));
     manager->post(netReq,multiPart);

注: 以form-data格式上传文件时 setHeader()函数的参数中一定要包含 name和filename 缺一不可。

发布了29 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42542969/article/details/104680360