Qt http Post 附带参数上传文件

Qt http Post 附带参数上传文件
今天聊聊Qt 通过http Post的方式上传文件,并且带上参数一起上传

QString baseUrl = "https://你的网址;
参数1:
QHttpPart parPart1;
parPart1.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(“form-data; name=“Note””));
parPart1.setBody(gpsName.toUtf8());

上面的name=“Note”"就是参数名,parPart1.setBody(gpsName.toUtf8());就是参数对应的值;

有几个参数就有几个QHttpPart,比如又有一个参数
QHttpPart parPart2;
parPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(“form-data; name=“Code””));
parPart2.setBody(“参数值”);

下面开始定义上传文件:
QHttpPart dbFilePart;
QString requestFormat = QString::fromUtf8(“form-data;name=%1;filename=%2;type = application/octet-stream”)
.arg("“dbFile”")
.arg(“XX.db”);
上面的名称和文件名是成对出现的
dbFilePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(requestFormat));
QFile::setPermissions(“文件路径”,QFile::WriteOwner|QFile::ReadOwner);//设置读写权限
QFile* file = new QFile;
file->setFileName(“文件路径“);
file->open(QIODevice::ReadOnly);
file->setParent(multiPart);
dbFilePart.setBodyDevice(file);
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
multiPart->append(parPart1);
multiPart->append(parPart2);
multiPart->append(dbFilePart);
下面就开始Post上传了
QNetworkRequest request;
request.setUrl(baseUrl);

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkReply *reply=manager->post(request,multiPart);
multiPart->setParent(reply);
connect(reply, SIGNAL(finished()),this, SLOT(onUploadFile()));
connect(reply, SIGNAL(metaDataChanged()),this, SLOT(onmetaDataChanged()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this, SLOT(onUploadError(QNetworkReply::NetworkError)));

你可能感兴趣的:(Qt,qt)