Ai
1 Star 0 Fork 0

小邓/client

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fileupload.cpp 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
小邓 提交于 2024-07-07 01:26 +08:00 . 清理到部分不必要的输出和注释
#include "fileupload.h"
fileUpload::fileUpload(QObject *parent)
: QObject{parent}
{}
fileUpload::~fileUpload()
{
}
void fileUpload::uploadFileData()
{
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly)) // 只读形式打开文件
{
// 打开失败
QMessageBox::warning(NULL, "打开文件", "打开文件失败!");
}
// 二进制形式传输文件
char *pBuffer = new char[4096]; // 4096个字节读写效率更高
qint64 iActualSize = 0;
while(true)
{
iActualSize = file.read(pBuffer, 4096); // 读数据,返回值是实际读取数据大小
if (iActualSize > 0 && iActualSize <= 4096)
{
if (uploadSocket->state() == QAbstractSocket::ConnectedState) {
// qDebug()<<"连接状态中";
}
uploadSocket->write(pBuffer, iActualSize);
}
else if (iActualSize == 0)
{ // 发送完成
break;
}
else
{
// QMessageBox::warning(NULL, "上传文件", "上传失败!");
qDebug()<<"上传失败";
break;
}
}
file.close();
delete [] pBuffer;
pBuffer = NULL;
filePath.clear(); // 清除上传文件夹名,以免影响之后上传操作
}
void fileUpload::setFilePath(QString path)
{
filePath = path;
}
void fileUpload::setTcpSocket(my_tcpsocket *socket)
{
uploadSocket = socket;
connect(uploadSocket,&my_tcpsocket::readyUpdate,this,&fileUpload::uploadFileData);
}
my_tcpsocket *fileUpload::get_uploadSocket()
{
return uploadSocket;
}
void fileUpload::setPdu(PDU *pdu,uint size)
{
this->pdu = mkPDU(size);
this->pdu->uiMsgType = pdu->uiMsgType;
sprintf(this->pdu->msg,"%s",pdu->msg);
}
void fileUpload::init_update()
{
this->uploadSocket->write((char*)pdu,pdu->uiPduLen);
}
void fileUpload::init_download()
{
this->uploadSocket->write((char*)pdu,pdu->uiPduLen);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiao-deng-a/client.git
git@gitee.com:xiao-deng-a/client.git
xiao-deng-a
client
client
master

搜索帮助