TIdFTP组件在C++Builder里面如何实现续传啊????????

taoyi 2005-07-04 11:09:15
TIdFTP组件在C++Builder6里面如何实现续传啊????????

我看了一些DP下的代码,发现有些方法跟CB中的不一样,是不是CB的TIdFTP组件(版本是8.xxx)不支持续传啊??
...全文
349 点赞 收藏 9
写回复
9 条回复
zsl342 2006年03月06日
断点续传需要服务器端和客户端两方面的配合。在服务器端,要支持REST n ,(n大于0)这个命令,而客户端则要负责计算出这个n的值。首先服务器端要给客户端list的权限,要不然客户端不知道远程服务器上有哪些文件,大小多少,就不可能计算出n;当客户端获得列表后,可以检测用户要上传的文件是否有同名,如果同名则可以检查大小是否一致,如果不一致,可以提示客户是重传还是续传或者放弃之类的。如果是续传,要先发出REST n这个命令,然后再发STORE命令,这个时候服务器会知道你是续传的,在相应的OnStoreFile响应函数的参数中AAppend就是true,否则就是false(这个AAppend可不是给你用来修改的,呵呵)。然后我们可以根据AAppend,以不同的方式创建一个文件流,续传的话OpenMode是fmOpenWrite,另外别忘了Seek(0, soFromEnd).
回复 点赞
chenjun716 2005年11月02日
把BCB6的Indy升级到9.0试了下。
能断点下载实现了。
但实现不了断点上传??

IdFTP1->Put(OpenDialog1->FileName,remotefile,true);
把AAppend参数设为true不起作用,
结果是把整个文件加到已传了一部分的文件上面??
回复 点赞
constantine 2005年11月01日
用IdFTP1->Size(serverfilename);只是判断用
真正实现的还是put,难道8.0的put不支持?
回复 点赞
WiseNeuro 2005年10月31日
学习
回复 点赞
chenjun716 2005年10月30日
我也在写这,在BCB6中的TIdFTP组件和DELPHI的是不一样,没有那个断点下载的参数?
大伙说说,在BCB中怎么实现断点下载呢?
上传倒是有一个参数,可通过比较两地文件的大小来进行。
还有就是怎么样判断FTP服务器上的某一文件存不存在?
本地的可用FileExists(localfilename)。
我是通过Temp = IdFTP1->Size(serverfilename);
if(Temp != -1)存在
if(Temp == -1)不存在
不知这种做法行不行?
回复 点赞
shadowstar 2005年10月28日
没有完全的断点上传,一般是让用户来判断是否断点上传,软件很难判断。
回复 点赞
Sumel 2005年10月28日
有Indy9.0吧,支持断点下载。断点上传好象不行。正在研究断点上传中。。。
回复 点赞
cimgg 2005年10月28日
indy9.0支持断点续传?能不能说的详细一点
回复 点赞
constantine 2005年10月28日
如果server支持,put的时候后面的参数AAppend控制一下就行 了
回复 点赞
发动态
发帖子
网络及通讯开发
创建于2007-08-02

902

社区成员

8891

社区内容

C++ Builder 网络及通讯开发
社区公告
暂无公告