我需要在服务器上上传目录和子目录。我想我需要调用方法IdFTP->Put(...);
但我不知道该怎么做。请帮帮我!
答案 0 :(得分:4)
TIdFTP::Put()
上传单个文件。 TIdFTP
本身不支持上传文件夹,因此您必须手动实施:
使用TIdFTP::ChangeDir()
转到起始父文件夹。
使用TIdFTP::Put()
将每个文件上传到该文件夹。
使用TIdFTP.MakeDir()
创建该文件夹中的每个子文件夹。
以递归方式为您在#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);
}
}