有关idftp的读取列表的问题

iverson1982 2007-04-28 04:32:29
我在用idftp做个FTP客户端读取列表时遇到两个问题,
1(主要的):在读取IIS或SEV-U做的FTP列表时没有问题,但去读取同事用网上下的FTP服务器绿色下载站建立的FTP的列表时,在运行到LIST命令后,报错("*":Directory not found),简单代码如下:
IdFTP1->Host=Edit1->Text;
IdFTP1->Username=Edit2->Text;
IdFTP1->Password=Edit3->Text;
IdFTP1->Port=Edit4->Text.ToInt();

TStringList *filelist=new TStringList();
IdFTP1->Connect(true,IdTimeoutDefault);
IdFTP1->List(filelist,'*',True);
我用FLASHFTP去连接这种服务器,可以正确读取列表,但看FLASHFTP的连接过程,连接IIS或SEV-U时只通过[R] LIST -al
[R] 150 Opening ASCII mode data connection for /bin/ls.
[R] 226 Transfer complete.
就可以了,而绿色FTP的站点则是
[R] LIST -al
[R] 550 "-al": Directory not found.
[R] LIST
[R] 150 Opening ASCII mode data connection for directory list.
[R] 226 Transfer complete
显然也遇到了这个错误,但不知道它是如何解决的?

2(次要的):在成功读取列表后,除了上述的filelist中包含文件信息,IdFTP1->DirectoryListing结构中也包含这些信息,如文件名信息存放在IdFTP1->DirectoryListing->Items[i]->FileName中,但我在读取IIS的FTP时,无法正确读取文件大小为0的文件名,其它文件或文件夹可以正确读取,SEV-U的0大小的文件也可正确读取;当然我可以从filelist中抽出正确的文件名,但想问下,这是为什么?
...全文
475 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iverson1982 2007-04-30
  • 打赏
  • 举报
回复
Waiting4you(毛毛),你分拿到了没,结帖的时候出来个什么参数错误,之后就发现帖子已经结了,这里看没给分,但进了管理里分已经给了.....
Waiting4you 2007-04-30
  • 打赏
  • 举报
回复
拿到了,CSDN有时就这样
Waiting4you 2007-04-29
  • 打赏
  • 举报
回复
注意IIS里的FTP用的是UTF-8编码,有中文名称时会乱码(要用Utf8ToAnsi转换)
iverson1982 2007-04-29
  • 打赏
  • 举报
回复
恩,第一个问题解决了,多谢Waiting4you(毛毛).
那第二个问题有人遇到过吗?只有IIS的FTP里大小为0的文件用IdFTP1->DirectoryListing->Items[i]->FileName读出的名称不正确,是为什么呢?
Waiting4you 2007-04-28
  • 打赏
  • 举报
回复
不知道你的怎么回事,我说的就是indy9啊, 它的定义是这样的:

TIdFTP::List(TStrings *ADest ,const AnsiString ASpecifier = "",bool ADetails=true);

so, IdFTP1->List(filelist); 就是IdFTP1->List(filelist,"",true);
iverson1982 2007-04-28
  • 打赏
  • 举报
回复
我是在CB5中自己装的indy9.0,是不是少了些东西?
iverson1982 2007-04-28
  • 打赏
  • 举报
回复
直接用IdFTP1->List(filelist); 编译就出错啊?少参数...
Waiting4you 2007-04-28
  • 打赏
  • 举报
回复
直接用 IdFTP1->List(filelist); 试试

1,317

社区成员

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

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