2014-06-06 3 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. # 3에서 만든 각 하위 폴더에 대해 순환 반복 # 1.

관련 문제