1,593
社区成员
发帖
与我相关
我的任务
分享
procedure TIdFTP.Get(const ASourceFile: string; ADest: TIdStream; AResume: Boolean = False);
begin
//for SSL FXP, we have to do it here because InternalGet is used by the LIST command
//where SSCN is ignored.
ClearSSCN;
AResume := AResume and CanResume;
ADest.Position := 0;
InternalGet('RETR ' + ASourceFile, ADest, AResume);
end;
procedure TIdFTP.Get(const ASourceFile, ADestFile: string; const ACanOverwrite: boolean = False;
AResume: Boolean = false);
var
LDestStream: TIdStream;
begin
AResume := AResume and CanResume;
if ACanOverwrite and (not AResume) then begin
Sys.DeleteFile(ADestFile);
LDestStream := TFileCreateStream.Create(ADestFile);
end
else begin
if (not ACanOverwrite) and AResume then
begin
LDestStream := TAppendFileStream.Create(ADestFile);
end
else
begin
raise EIdFTPFileAlreadyExists.Create(RSDestinationFileAlreadyExists);
end;
end;
try
Get(ASourceFile, LDestStream, AResume);
finally
Sys.FreeAndNil(LDestStream);
end;
end;
FTP.Get(FileName, SaveFile.FileName, false, true);