知道FTP地址、用户名、密码,用BCB如何从FTP上拷贝目录(包括子目录)到本地?

zzhong2 2003-04-17 09:09:12
知道FTP地址、用户名、密码,用BCB如何从FTP上拷贝目录(包括子目录)到本地?

host:server1
userid:user1
userpassword:abc
要拷贝server1上的test目录
ftp://user1:abc@server1/test
...全文
183 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhong2 2003-04-18
  • 打赏
  • 举报
回复
我试了在OnSuccess事件处理程序中FTPDirectoryList也不灵,真是一砣屎!
void __fastcall TFormMain::NMFTP1Success(TCmdType Trans_Type)
{
int i;
switch(Trans_Type)
{
case cmdList:
i=NMFTP1->FTPDirectoryList->name->Count;//i=0
StatusBar1->SimpleText = "List success";
break;
}
}
zzhong2 2003-04-18
  • 打赏
  • 举报
回复
Indy的组件还可以,一切搞定
zzhong2 2003-04-17
  • 打赏
  • 举报
回复
原来NMFTP是一砣屎!:
http://expert.csdn.net/Expert/topic/1571/1571735.xml?temp=.1370508
http://expert.csdn.net/Expert/topic/1520/1520792.xml?temp=.9708521
http://expert.csdn.net/Expert/topic/1258/1258183.xml?temp=.2946436
http://expert.csdn.net/Expert/topic/1489/1489380.xml?temp=.5100366
BCB6中有问题的控件要是再多几个,BCB6就成毛屎坑儿了.

对于"FTPDirectoryList怎么不管用呀,文件数老是取得0值"的问题begincsdn是这样回答的:我还没试过
begincsdn(begincsdn) ( ) 信誉:100
在这里应该注意这句话,见BCB提供的帮助。
For each item listed, the OnListItem event is called.
每个Item被列出,OnListItem都会被调用,也就是说,有多少条目,OnListItem被调用多少次。
同时,如果这个命令调用成功的话,会触发OnSuccess事件。
也就是回调函数啦,这两个回调函数你自己得写了。
希望同样关注NList()成员函数。

注意几个问题是:TNMFTP创建的是一个线程,所以执行List时不会有延迟,会直接执行到下一句,而NMFTP1->FTPDirectoryList->name->Count只有在OnSuccess触发以后,其值才真的有效,你可以将正确的内容获取放在这个函数中实现。
简单代码如下
void __fastcall TForm1::FTPSuccess(TCmdType Trans_Type)
{
switch(Trans_Type)
{
case cmdList:
int NUM = NMFTP1->FTPDirectoryList->name->Count;
ShowMessage(IntToStr(NUM));

}
}

void __fastcall TForm1::OnListItem(AnsiString str)
{//可以将这个str加到某个列表中去,这个就是每次列出来的名字。
}

grming 2003-04-17
  • 打赏
  • 举报
回复
NMFTP->UserID="user1";
NMFTP->Pssword="abc";
NMFTP->Port=...
NMFTP->Host="server1";
NMFTP->Connect();
NMFTP->ChangeDir("test");
DownloadDirectory("test");

写一个void DownloadDirectory(String subFolderName)方法,里面要用到递归吧,我想,可以使用TFTPDirectoryList获得文件列表





bbonline 2003-04-17
  • 打赏
  • 举报
回复
用递归

我用的是Indy
warton 2003-04-17
  • 打赏
  • 举报
回复
老贴子中有,你自己搜索一下吧!
精华区也有!
grming 2003-04-17
  • 打赏
  • 举报
回复
FTPDirectoryList好像是有问题,可能是BCB中的一个Bug,你试试Indy的组件吧!
zzhong2 2003-04-17
  • 打赏
  • 举报
回复
FTPDirectoryList怎么不管用呀,文件数老是取得0值
int i;
NMFTP1->ParseList=true;
NMFTP1->List();
i=NMFTP1->FTPDirectoryList->name->Count;//i=0

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧