From 7d505651f87270f40882dc6b2358e4fde5d87eca Mon Sep 17 00:00:00 2001 From: jiubingdao <2135482699@qq.com> Date: 星期二, 29 七月 2025 09:14:39 +0800 Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/天开景运_0405_250719 --- Server/付林涛/code/tianKai/vcsmainwindow.cpp | 122 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 121 insertions(+), 1 deletions(-) diff --git "a/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" "b/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" index 60f1d41..a711c3e 100644 --- "a/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" +++ "b/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" @@ -1,6 +1,8 @@ #include "vcsmainwindow.h" #include "ui_vcsmainwindow.h" +#include <QFileInfo> +#include <QMessageBox> VCSMainWindow::VCSMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::VCSMainWindow) @@ -10,13 +12,18 @@ m_release = new Release(this); m_rollBack = new RollBack(this); m_readLog = new ReadLog(this); + m_upLoad = new UpLoador(this); + m_msg = new QMessageBox(this); ui->stackedWidget->addWidget(m_addFile); ui->stackedWidget->addWidget(m_release); ui->stackedWidget->addWidget(m_rollBack); ui->stackedWidget->addWidget(m_readLog); - ui->stackedWidget->setCurrentWidget(m_addFile); + + + connect(m_addFile,SIGNAL(addFileSignal(QString, QString)),this,SLOT(addFileSlot(QString, QString))); + } VCSMainWindow::~VCSMainWindow() @@ -43,3 +50,116 @@ { ui->stackedWidget->setCurrentWidget(m_readLog); } + +void VCSMainWindow::addFileSlot(QString file, QString versionMessage) +{ + QFileInfo fileInfo(file); + // 鑾峰彇鏂囦欢鍩烘湰淇℃伅 + QString fileName = fileInfo.fileName(); + qint64 size = fileInfo.size(); + + + + // 璁$畻澶存秷鎭暱搴︼紝骞跺垎閰嶇┖闂� + int len = sizeof(UpLoadPkgHead)+fileName.size()+1; + UpLoadPkgHead *head = (UpLoadPkgHead*)malloc(len); + + // 澶存秷鎭俊鎭~鍏� + head->head.type = UPLOAD_REQ; + head->head.len = len; + head->upLoadType = HEAD_UPLOAD_REQ; + head->fileNameLen = fileName.size(); + memcpy(head->fileName,fileName.data(),fileName.size()); + head->fileName[fileName.size()] = '\0'; + + // 鍙戦�佸ご娑堟伅 + + int ret = m_upLoad->upfile((char*)head,len); + if(ret < len){ + qDebug()<<"浼犺緭鏈夐棶棰�: "; + free(head); + head = nullptr; + return ; + } + free(head); + head = nullptr; + QFile *pFile = new QFile(file); + if(!pFile){ + return; + } + + // 璇绘枃浠跺唴瀹� + + if (!pFile->open(QIODevice::ReadOnly)) { + qDebug() << "Failed to open file for reading:" << pFile->errorString(); + m_msg->warning(nullptr, "鎻愮ず", "鏂囦欢鎵撳紑澶辫触"); + return; + } + const int bufferSize = 8 * 1024; + char buffer[bufferSize] = {0}; + + qint64 totalBytesRead = 0; + int flag = 0; + while (!pFile->atEnd()) { + qint64 bytesRead = pFile->read(buffer, bufferSize); + if (bytesRead == -1) { + qDebug() << "Error during read operation:" << pFile->errorString(); + break; + } + totalBytesRead += bytesRead; + int dtlen = sizeof(UpLoadPkgData)+fileName.size()+bytesRead+2; + UpLoadPkgData *dataPkg = (UpLoadPkgData *)malloc(dtlen); + memset(dataPkg, 0, dtlen); + dataPkg->head.len = len; + dataPkg->head.type = UPLOAD_REQ; + dataPkg->upLoadType = DATA_UPLOAD_REQ; + dataPkg->fileNameLen = fileName.size(); + dataPkg->dataLen = bytesRead; + dataPkg->flag = ++flag; + memcpy(dataPkg->data,fileName.data(),fileName.size()); + dataPkg->data[fileName.size()] = '\0'; + strcpy(&(dataPkg->data[fileName.size()+1]),buffer); + ret = m_upLoad->upfile((char*)dataPkg,dtlen); + if(ret < dtlen){ + qDebug()<<"鏁版嵁浼犺緭鏈夐棶棰�"; + free(dataPkg); + dataPkg = nullptr; + m_msg->warning(nullptr, "鎻愮ず", "鏁版嵁浼犺緭鏈夐棶棰�"); + return ; + } + free(dataPkg); + dataPkg = nullptr; + } + if(totalBytesRead != size){ + qDebug()<<"鏁版嵁鍙戦�佷笉瀹屾暣"; + m_msg->warning(nullptr, "鎻愮ず", "鏁版嵁鍙戦�佷笉瀹屾暣"); + return; + } + qDebug()<<"鏁版嵁鍙戦�佸畬鎴愶紝鍙戦�佹暟鎹簱鍖�"; + + int finLen = sizeof(UpLoadPkgFin)+fileName.size()+versionMessage.size()+2; + UpLoadPkgFin *finPkg = (UpLoadPkgFin *)malloc(finLen); + finPkg->head.len = finLen; + finPkg->head.type = UPLOAD_REQ; + finPkg->fileNameLen = fileName.size(); + finPkg->cnt = flag; + memcpy(finPkg->fileName,fileName.data(),fileName.size()); + finPkg->fileName[fileName.size()] = '\0'; + memcpy(&(finPkg->fileName[fileName.size()+1]),versionMessage.data(),versionMessage.size()); + finPkg->fileName[fileName.size()+versionMessage.size()+1] = '\0'; + + ret = m_upLoad->upfile((char*)finPkg,finLen); + if(ret < finLen){ + qDebug()<<"fin鍖呬紶杈撴湁闂"; + free(finPkg); + finPkg = nullptr; + m_msg->warning(nullptr, "鎻愮ず", "涓婁紶澶辫触锛�"); + return ; + } + free(finPkg); + finPkg = nullptr; + qDebug()<<"鏁版嵁搴撳寘鍙戦�佸畬鎴�"; + + m_msg->information(nullptr, "鎻愮ず", "涓婁紶鎴愬姛锛�"); + +} -- Gitblit v1.8.0