转载请注明出处:http://www.cnblogs.com/dachen408/p/8185060.html

qt5 上传图片到http服务器,亲测可以用,qt5.8+vs2015,直接上码;

头文件:

#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,

http://ip:port改为对应的服务器和端口号
#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. [UIScreen mainScreen].bounds.size.width 和self.view.frame.size.width的区别
  2. Code First Migrations更新数据库结构(数据迁移)
  3. $modal
  4. 百度VS高德:LBS开发平台ios SDK对比评测
  5. #linux包之tcpdump之tcpdump命令
  6. gcc编译器基本命令和vi编辑器2
  7. SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-007-给flowl加权限控制&lt;secured&gt;
  8. Oracle 序列的应用
  9. HDOJ2031进制转换
  10. phpstorm 同步远程服务器代码
  11. DedeCMS中实现在顶层banner中显示自定义登录信息
  12. 利用ffmpeg做视频解码的顺序
  13. Office组件无法正常使用的解决方法
  14. js中获取时间new Date()详细介绍
  15. 【转】再有人问你Http协议是什么,把这篇文章发给他
  16. vue渲染时对象里面的对象的属性提示undefined,但渲染成功
  17. 设置shell脚本静默方式输入密码方法
  18. iOS_生成pem推送证书(用于百度云推送)
  19. MapReduce 图解流程超详细解答(1)-【map阶段】
  20. Ubuntu18---VMware虚拟机中Ubuntu18.04系统,开机输入密码后无响应黑屏

热门文章

  1. html5--6-16 CSS3中的文字与字体
  2. Silverlight中使用MVVM(2)
  3. golang copy函数
  4. Ubuntu 12.04 nethogs 流量监控查看
  5. SpringMVC之使用Validator接口进行验证
  6. [USACO2012 OPEN] Bookshelf
  7. PHP自动发送邮件
  8. String、StringBuffer和StringBuilder有什么区别?
  9. 【旧文章搬运】修改PEB,断链隐藏模块成功
  10. 025--python初识类和对象