灌木大叔

每一个不曾起舞的日子都是对以往生命的辜负!!

  :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::
今天获取小众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服务器均通过。

 

posted on   灌木大叔  阅读(306)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示