获取小众ftp服务器指定目录内容列表

时间:2022-04-20 13:21:50
今天获取小众ftp服务器指定目录内容列表时费劲急了。
  1. ///parama url="ftp://x.x.x.x/dir_name"
  2. public string GetFTPDir(string url)
  3. {
  4. FtpWebRequest reqFtp;
  5. try
  6. {
  7. reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
  8. reqFtp.KeepAlive = false;
  9. //reqFtp.UseBinary = true;   //指定ftp数据传输类型为 二进制
  10. //reqFtp.Credentials = new NetworkCredential(USERID, PassWord);     //设置于ftp通讯的凭据
  11. reqFtp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;      //指定操作方式
  12. WebResponse response;
  13. response = reqFtp.GetResponse();  //获取一个FTP响应
  14. StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);   //读取响应流
  15. string contentHTML = sr.ReadToEnd();    //读取网页的源代码
  16. sr.Close();
  17. return contentHTML;
  18. }
  19. catch (Exception ex)
  20. {
  21. return ex.Message;
  22. }
  23. }

当访问iis的ftp服务器时没有错误,访问一个小型ftp时报错227,查阅资料后修改第9行为reqFtp.UsePassive = false;

执行后有了返回,但是为根目录的列表。

.Net的FtpWebRequest没有改变当前目录操作,而是只能创建时指定文件或目录。百般无奈时,想到url应该是一个文件,目录在自己的下面显示一个“.”表示自己。所以修改url参数为url="ftp://x.x.x.x/dir_name/."。再次执行代码果然通过,不论iis ftp还是小型ftp服务器均通过。