IdFTP,上传目录和子目录

时间:2014-06-06 09:41:27

标签: ftp c++builder indy

我需要在服务器上上传目录和子目录。我想我需要调用方法IdFTP->Put(...); 但我不知道该怎么做。请帮帮我!

2 个答案:

答案 0 :(得分:4)

TIdFTP::Put()上传单个文件。 TIdFTP本身不支持上传文件夹,因此您必须手动实施:

  1. 使用TIdFTP::ChangeDir()转到起始父文件夹。

  2. 使用TIdFTP::Put()将每个文件上传到该文件夹​​。

  3. 使用TIdFTP.MakeDir()创建该文件夹中的每个子文件夹。

  4. 以递归方式为您在#3中创建的每个子文件夹重复#1。

答案 1 :(得分: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);
    }
}