首页 > 编程语言 >Qt使用QHttpMultiPart发送文件和检查本地程序版本号

Qt使用QHttpMultiPart发送文件和检查本地程序版本号

时间:2024-05-10 10:12:52浏览次数:14  
标签:QNetworkRequest QHttpMultiPart 版本号 object url multiPart file reply Qt

发送一个文件到指定的服务器地址

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QUrl url("http://172.16.21.47:8889/financeContract/financeContractRecordDataImport"); // 替换为你的上传URL	
QNetworkRequest request(url);
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

// 添加其他表单字段(如果需要)  
// QHttpPart part;  
// part.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"fieldName\""));  
// part.setBody("fieldValue");  
// multiPart->append(part); 

// 添加文件  
QHttpPart filePart;
//上传固定的名称
//filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"myfile.txt\""));
//使用上传源文件名称
QFileInfo fileInfo(fileName);
QString docName = fileInfo.fileName();
filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"" + docName + "\""));	

QFile *file = new QFile(fileName); // 替换为你的文件路径  
if (file->open(QIODevice::ReadOnly)) {
	filePart.setBodyDevice(file);
	//file->close();
}
multiPart->append(filePart);

QNetworkReply *reply = manager->post(request, multiPart);

multiPart->setParent(reply); // 设置parent以确保在回复完成后删除multiPart  

// 处理响应...  
connect(reply, &QNetworkReply::finished, this, [reply]() {
	if (reply->error() == QNetworkReply::NoError) {
		// 处理成功响应  
		QString response = reply->readAll();
		// ...  
	}
	else {
		// 处理错误  
		// ...  
	}
	reply->deleteLater();
});

检查本地程序版本号

m_http = new QNetworkAccessManager();
//设置头信息
QNetworkRequest m_url;
m_url.setUrl(QUrl("https://pmp.eloam.net/api/ota/findFadVersion"));
m_url.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");//区别于上传文件

QSslConfiguration m_sslConfig = QSslConfiguration::defaultConfiguration();
m_sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
m_sslConfig.setProtocol(QSsl::TlsV1_2);
m_url.setSslConfiguration(m_sslConfig);

QJsonObject object;
object.insert("as", "758686D6");
object.insert("ks", "9f0c219ca61e41b7b3e2b1f325640c9a");
object.insert("productCode", "HSPS");
object.insert("version", "V7.1.3");
QByteArray byte_array = QJsonDocument(object).toJson();
m_res = m_http->post(m_url, byte_array);//发起post请求

connect(m_res, &QNetworkReply::finished, this, &Update::requestFinished);

标签:QNetworkRequest,QHttpMultiPart,版本号,object,url,multiPart,file,reply,Qt
From: https://www.cnblogs.com/gblzacy/p/18183666

相关文章

  • QT学习
    1、在QT的.ui文件中如果想修改界面的实现函数:1)点击.ui进入界面                   2)右键“Send”按钮,点击跳转到“槽” 3)点击“OK”,跳转到点击Send按钮时,后端处理的函数 ......
  • Qt开发websocket服务
     Qt自带的有网络编程模块,需要再pro文件加上 websockets#pro文件QT+=coreguiwebsockets .h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QWebSocketServer>#include<QWebSocket>#include<QDebug>QT_BEGIN_NAMESPACEna......
  • QT学习第32天-QMessageBox的使用
     #ifndefWIDGET_H#defineWIDGET_H#include<QWidget>namespaceUi{classWidget;}classWidget:publicQWidget{Q_OBJECTpublic:explicitWidget(QWidget*parent=nullptr);~Widget();privateslots:voidon_pushButton_cli......
  • MQTT服务器连接不上的问题
    问题描述环境:阿里云服务器Ubuntu22.04.3LTS,安装mosquitto后,在虚拟机端订阅消息出现报错(以前用阿里云Ubuntu20.04LTS的服务器装上就能用),以下服务器ip是我乱填的mosquitto_sub-t/iotstuff-h129.25.125.124-p1883Error:Connectionrefused解决办法云服务器ECS->安......
  • Q学习第31天-QThread
     新建一个类: 在Main头文件中定义全局变量和槽函数: 实现如下:使用QThread将一个文本框的值切换我是单数/我是复数#include"mainwindow.h"#include"ui_mainwindow.h"#include<QDateTime>#include<QThread>#include<QDebug>MainWindow::MainWindow(QWidget*par......
  • [Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。
    前言最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。如果你是很懂CMake的话,ui_xx.h的文件目录在$下然后除了有关这个ui_xx.h,还有一些别的可以简单聊聊的一、父子工程组织,或者说依赖关系在使用CMake进行开发的时候,一般可以有......
  • qt 使用windows 的USB库 hid.dll 报错 :undefined reference to `HidD_GetAttributes(v
     1、cmakeLists.txt文件引入相应的库: cmake_minimum_required(VERSION3.5)project(test1LANGUAGESCXX)file(GLOBSRC./*.cpp./*.h)add_executable(test1${SRC})include(GNUInstallDirs)target_link_libraries(${PROJECT_NAME}hidsetupapi)inst......
  • unbuntu为Qt-Creator程序设置快捷打开命令
    主要用到ln-s建立软链接命令。步骤:cd/binsudoln-s#假设qt-creator的路径在/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.shln/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh./qt-creator之后在Shell敲击qt-creator回车,即可打开QtCreator,不需要敲那么长的......
  • UIOTOS前端零代码应用 蓝图连线+嵌套封装 实现MQTT输入0、1切换门禁开和关
    目标通过连线+嵌套封装,实现MQTT数据推送前端控制门禁开关最终效果实现过程步骤1:新建一个页面,在工具函数input输入两个门禁的开关图标地址,再通过连线和解析实现输0、1切换图标。 步骤2:再插入图片按钮,通过连线和解析,把工具函数的输出传递给图片按钮组件的path属性。 步骤......
  • 在Gitlab Runner中调用Web Api写入Directory.Build.props需要的版本号文件
    摘要本文介绍了在Windows上的GitlabRunner,如何调用webapi更新版本号定义文件。PowerShellfunctionUpdate-Version{ param( [string]$WEB_API_URL, [string]$NAMESPACE, [string]$VERSION_ID )echo"能生成或写入.props文件的webapi的网站地址:"$WEB_API_URLe......