楼主我告你的那两个贴子里都有答案啊,你试试就知道了
办法一:
能否续传是由FTP Server决定的, 在FTP Server允许续传的情况下,直接使用Get方法就行了:
procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = false); overload;
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean = false; AResume: Boolean = false); overload;
只要传入最后一个参数为True就是续传了, 默认是不续传的。
例如:IdFTP1.Get(edit1.text, 'c:/abc.rar', false, true);
办法2
首先你的FTP服务器必须支持断点传续,用Indy控件实现的,供参考。
procedure TfrmMain.FTPDownload(str,strTo: string);
var
Stream: TFileStream;
strFrom: string;
sr: TSearchRec;
begin
if FileExists(strTo) then
begin
FindFirst(strTo, faAnyFile, sr);
if sr.size < idFTP.size(strFrom) then
begin
if Application.MessageBox('文件存在,继续下载吗?', '注意', MB_YESNO) = idYes then
begin
if idFTP.Connected then
begin
Stream := TFileStream.Create(strTo, fmOpenWrite);
Stream.Seek(0, soFromEnd);
DownloadedLen := sr.Size;
idFTP.SendCmd(Format('REST %d', [sr.Size]));
try
try
idFTP.Get(strFrom, Stream);
except
end;
finally
Stream.Free;
end;
end;
end;
end;
end;
end;