转载请注明出处:http://blog.youkuaiyun.com/neochan1108/article/details/78964101
qt5 上传图片到http服务器,亲测可以用,qt5.8+vs2015,直接上码;
头文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef UPDATEPICTEST_H
#define UPDATEPICTEST_H
#include <QtWidgets/QMainWindow>
#include "ui_updatepictest.h"
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QFile>
#include <QDataStream>
#include <QTextCodec>
class
UpdatePicTest :
public
QMainWindow
{
Q_OBJECT
public
:
UpdatePicTest(QWidget *parent = 0);
~UpdatePicTest();
private
slots:
void
slot_requestFinished();
void
on_pushButton_clicked();
void
upLoadError(QNetworkReply::NetworkError code);
void
uploadProcess(qint64 bytesReceived, qint64 bytesTotal);
private
:
QNetworkAccessManager * m_pNetWorkManager = NULL;
void
testUpload();
QNetworkReply *reply;
private
:
Ui::UpdatePicTestClass ui;
};
#endif // UPDATEPICTEST_H
|
cpp,
1
|
http:
//ip:port改为对应的服务器和端口号
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include "updatepictest.h"
#include <QDebug>
UpdatePicTest::UpdatePicTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(
this
);
m_pNetWorkManager =
new
QNetworkAccessManager();
}
UpdatePicTest::~UpdatePicTest()
{
}
void
UpdatePicTest::slot_requestFinished()
{
QByteArray resultContent = reply->readAll();
QTextCodec* pCodec = QTextCodec::codecForName(
"UTF-8"
);
QString strResult = pCodec->toUnicode(resultContent);
int
nHttpCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
//http返回码
ui.textEdit->setPlainText(strResult);
ui.edt_code->setText(QString(
"%1"
).arg(nHttpCode));
}
void
UpdatePicTest::on_pushButton_clicked()
{
testUpload();
}
void
UpdatePicTest::upLoadError(QNetworkReply::NetworkError code)
{
qDebug() << code;
}
void
UpdatePicTest::uploadProcess(qint64 bytesReceived, qint64 bytesTotal)
{
qDebug() << bytesReceived << bytesTotal;
}
void
UpdatePicTest::testUpload()
{
QString path = ui.lineEdit->text().trimmed();
QHttpMultiPart *multiPart =
new
QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(
"image/png"
));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QString(
"form-data; name=\"%1\"; filename=\"%2\""
).arg(
"offline.png"
).arg(path));
QFile *file =
new
QFile(path);
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
imagePart.setBodyDevice(file);
file->setParent(multiPart);
multiPart->append(imagePart);
QNetworkRequest request(QUrl(
"http://ip:port"
));
reply = m_pNetWorkManager->post(request, multiPart);
multiPart->setParent(reply);
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
this
, SLOT(upLoadError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(downloadProgress(qint64, qint64)),
this
, SLOT(uploadProcess(qint64, qint64)));
connect(reply, SIGNAL(finished()),
this
, SLOT(slot_requestFinished()));
}
|