FileTransporter.h
#pragma once
#include <QObject>
#include <memory>
class QTcpSocket;
class QFile;
class FileTransporter : public QObject
{
Q_OBJECT
public:
FileTransporter(QTcpSocket* socket, const QString& savePath = "./", QObject* parent = nullptr);
~FileTransporter();
void init();
public slots:
void transFile(const QString& path);
void recvData();
private:
QTcpSocket* m_socket;
std::shared_ptr<QFile> m_file;
qint64 m_datasize = 0; //文件总长度
qint64 m_filenameSize = 0; // 文件名长度
qint64 m_received = 0; // 已接受长度
QString filename = ""; // 文件名
QString m_saveDir = ""; // 保存路径
};
FileTransporter.cpp
#include <QTcpSocket>
#include <QDataStream>
#include <QFile>
#include <QDebug>
#include <QDir>
#include "FileTransporter.h"
void mkDirPath(const QString& path)
{
QFileInfo fIn