From ec576f7460a1c172f47758a4edcaa846e49db4d2 Mon Sep 17 00:00:00 2001
From: fertao <fertao@163.com>
Date: 星期一, 28 七月 2025 12:09:42 +0800
Subject: [PATCH] code add 0728

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