qt5 上传图片到http服务器

转载请注明出处:http://blog.csdn.net/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()));
 
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值