2014-06-06 5 views

ответ

2
void PutDir(TIdFTP* AIdFTP, const String& AFrom) 
{ 
    TSearchRec SR; 
    if (FindFirst(AFrom+"\\*.*", faAnyFile, SR)== 0) 
    { 
     do 
     { 
      if(SR.Name!= "." && SR.Name!= "..") 
      { 
       if (SR.Attr & faDirectory) 
       { 
        AIdFTP->MakeDir(SR.Name); 
        AIdFTP->ChangeDir(SR.Name); 
        PutDir(AIdFTP,AFrom+"\\"+SR.Name); 
        AIdFTP->ChangeDirUp(); 
       } 
       else 
       { 
        AIdFTP->Put(AFrom+"\\"+SR.Name,SR.Name); 
       } 
      } 
     } 
     while (FindNext(SR)== 0); 

     FindClose(SR); 
    } 
} 
4

TIdFTP::Put() загружает один файл. TIdFTP изначально не поддерживает загрузку папок, так что вам придется осуществить это вручную:

  1. TIdFTP::ChangeDir() использовать для перехода к исходной родительской папке.

  2. TIdFTP::Put() для загрузки каждого файла в эту папку.

  3. TIdFTP.MakeDir() для создания каждой подпапки в этой папке.

  4. рекурсивно повторите # 1 для каждой подпапки, созданной в # 3.

Смежные вопросы