簡體   English   中英

從FTP服務器下載目錄

[英]Downloading directory from FTP server

我正在通過 RAD Studio ( IdFTP ) 開發 FTP 客戶端。 如何從服務器下載目錄? 德爾福或 C++。 謝謝。

你需要調用TIdFTP.ChangeDir()去到所需的起始目錄,然后調用TIdFTP.List()來檢索它的文件和子目錄,然后通過循環的名稱TIdFTP.DirectoryListing調用TIdFTP.Get()上的每個文件名並將每個子目錄名稱存儲到您自己的本地列表中,然后最后在本地列表中的每個子目錄上重復上述步驟。

例如:

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;

DownloadFolder('/StartingDir', 'C:\Downloaded');

需要添加條件:

否則如果 ((IdFTP.DirectoryListing[I].ItemType = ditDirectory) 和(Length(IdFTP.DirectoryListing[I].FileName) > 2) ) 那么

避免“..”作為目錄名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM