Delphi 从FTP服务器下载目录
我正在用radstudioidftp开发FTP客户端。如何从服务器下载目录? Delphi或C++。谢谢。您需要调用TIdFTP.ChangeDir以转到所需的起始目录,然后调用TIdFTP.List以检索其文件和子目录的名称,然后在调用TIdFTP.DirectoryListing的TIdFTP.List中循环。获取每个文件名并将每个子目录名称存储到您自己的本地列表中,最后,在本地列表中的每个子目录上重复上述步骤 例如:Delphi 从FTP服务器下载目录,delphi,ftp,indy,c++builder-xe5,Delphi,Ftp,Indy,C++builder Xe5,我正在用radstudioidftp开发FTP客户端。如何从服务器下载目录? Delphi或C++。谢谢。您需要调用TIdFTP.ChangeDir以转到所需的起始目录,然后调用TIdFTP.List以检索其文件和子目录的名称,然后在调用TIdFTP.DirectoryListing的TIdFTP.List中循环。获取每个文件名并将每个子目录名称存储到您自己的本地列表中,最后,在本地列表中的每个子目录上重复上述步骤 例如: Procedure DownloadFolder(ARemoteFold
Procedure DownloadFolder(ARemoteFolder, ALocalFolder: string);
Var
SubFolders: TStringList;
I: Integer;
Begin
ALocalFolder := IncludeTrailingPathDelimiter(ALocalFolder);
ForceDirectories(ALocalFolder);
SubFolders := TStringList.Create;
Try
FTP.ChangeDir(ARemoteFolder);
FTP.List;
For I := 0 to FTP.DirectoryListing.Count-1 do
Begin
If FTP.DirectoryListing[I].ItemType = ditFile then
Begin
FTP.Get(FTP.DirectoryListing[I].FileName, ALocalFolder + FTP.DirectoryListing[I].FileName);
End
Else if FTP.DirectoryListing[I].ItemType = ditDirectory then
Begin
if (FTP.DirectoryListing[I].FileName <> '.') and FTP.DirectoryListing[I].FileName <> '..') then
SubFolders.Add(FTP.DirectoryListing[I].FileName);
End;
End;
For I := 0 to SubFolders.Count-1 do
Begin
DownloadFolder(ARemoteFolder + '/' + SubFolders[I], ALocalFolder + SubFolders[I]);
End;
Finally
SubFolders.Free;
End;
End;
有必要添加以下条件: 如果IdFTP.DirectoryListing[I].ItemType=ditDirectory和 LengthIdFTP.DirectoryListing[I].FileName>2然后
避免。。作为目录名您尝试了什么,什么失败了?通过谷歌搜索idftp目录列表,你们就可以开始了。我可以得到这个列表。但我需要下载带有文件的文件夹。过程get-Donw从服务器加载文件。我不明白如何下载所有文件。文件夹可能包含其他文件夹和文件…这是遍历目录时的重复获取。谷歌它,开始建设,当它失败时把你的代码放在这里。可能重复谢谢你。我知道一定有递归。你能告诉我怎样才能绕过所有的目录和子目录吗?我在回答中加了一个例子。可能需要一些调整,但它会给你它的jist。依赖这样的长度是错误的,因为可能有真正的文件夹中只有1-2个字符。忽视。。项,具体检查该项,并查找好的度量值,例如:如果IdFTP.DirectoryListing[I].ItemType=ditDirectory和IdFTP.DirectoryListing[I].FileName'.'和IdFTP.DirectoryListing[I].FileName'
DownloadFolder('/StartingDir', 'C:\Downloaded');