[求助]FTP上传文件,实现断点续传(40分)

  • 主题发起人 主题发起人 citydawn
  • 开始时间 开始时间
C

citydawn

Unregistered / Unconfirmed
GUEST, unregistred user!
我用INDY的 IDFTP向FTP服务器上上传文件,因为我是无线上网,网络不好所以要断点续传
IDFTP1.PUT(源,目标,TRUE);
这样写对么?
传输中我把程序关掉,在打开,他好象是把文件从头传了一便,上传的文件变大了,没有从断点传
 
求救,谁知道怎么实现,上传的断点续传?用其他的控件或方法也可以哦
 
盒子论坛里有人这么该了IDFTP.PAS

procedure TIdFTP.Put(const ASourceFile: string; const ADestFile: string = '';
const AAppend: boolean = false);
var
LSourceStream: TFileStream;
begin
LSourceStream := TFileStream.Create(ASourceFile, fmOpenRead or fmShareDenyNone);
//++
if ResumeSupported and Resume then
begin
FResumeUpload := True;
FResumePoint := Size(ADestFile);
end
else
FResumeUpload:=false;
//+
try
Put(LSourceStream, ADestFile, AAppend);
finally FreeAndNil(LSourceStream); end;
end;
 
神 啊! 救救我吧!
 
解决了不用修改,IDFTP的原码,只需要用流的方式传输就可以了
定义一个文件流,把要传的文件放进去,然后,上传之前,先判断一下服务器上的文件大小,
然后将值给 TSTREAM.POISION就可以了
问题解决,不过好冷清哦,这里怎么只有我一个人??
 
因为话都让你一个人说了!
hoho
 
citydawn好可爱哦!
 
不好意思!我又来了,出现新问题:
我把网线拔掉,也就是说非正常的断开FTP连接,就无法续传了,提示文件被其他程序占用
我把FTP服务器重新启动,又可以续传了,我觉的是因为,上次的连接在FTP服务器端没有断掉
从而导致再次续传时文件被上次的连接占用,于是我把FTP服务器上的空闲超时设置为30秒可是仍然不行,FTP服务器用的是OCEAN FTP不会是我的FTP服务器设置错了吧,求教中........................................................................
 
能就搞个 timer判断网络状态
 
你是说判断网络的流量么?如果判断是否连接的话就没有意思了。
判断流量的话怎么写哦?大家教教我
 
后退
顶部