QFTP怎么实现断点续传的上传呢

[复制链接]
查看11 | 回复4 | 2021-1-27 05:07:29 | 显示全部楼层 |阅读模式
intQFtp::get(constQString&file,QIODevice*dev,qulonglongsize,TransferTypetype)
{
QStringListcmds;
if(type==Binary)
cmdstransferMode==Passive?"PASVrn":"PORTrn");
if(size>0)
{
cmdsaddCommand(newQFtpCommand(Get,cmds,dev));
}
断点续传的下载用这个可以了,上传呢,怎么获取服务端文件大小呢
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:07:29 | 显示全部楼层
可以和服务器制定一个通讯协议啊,协议里面包含消息类型,数据长度。有需要的话服务器把数据长度返回给客户端
回复

使用道具 举报

千问 | 2021-1-27 05:07:29 | 显示全部楼层
QFtp实现的不是很好,如果哪位有好方法,贴上来就太棒了。断点上传,是不是用libcurl更好一点。
这有个东东,看一下不知道有没有用。
http://www.xuebuyuan.com/1445922.html
回复

使用道具 举报

千问 | 2021-1-27 05:07:29 | 显示全部楼层
事实上不推荐用QFtp,因为BUG实在太多了,传输文件Qt有QNetworkAccessManager,QNetworkRequest,QNetworkReply组合使用
回复

使用道具 举报

千问 | 2021-1-27 05:07:29 | 显示全部楼层
FTP的REST指令是告诉服务器从文件哪个位置开始下载,但是还没指定文件,然后就需要向服务器发送RETR+文件名命令,通知服务器要下载的文件名,这时服务器开始定位文件指针并发送数据
断点上传的话要先获取服务器上文件和本地同名的文件的大小,然后向服务器发送APPE+文件名的命令,表明数据要添加到这个文件的末尾;因为获取到了远程文件大小,就可以从本地文件指针的位置,从该位置发送数据就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行