删除FTP服务器

时间:2016-05-28 07:06:17

标签: c# winforms ftp ftpwebrequest

我已经在FTP服务器中创建了文件夹,其中包含登录到服务器的年份,月份和日期,我们可以看到当年点击该年创建的文件夹,它显示月份,当我点击它显示月份时日期。现在我需要删除这个文件夹。

以下是我在FTP服务器中删除文件夹的代码

FtpWebResponse responseFileDelete = (FtpWebResponse)ftpRequest.GetResponse();
  

未处理的类型' System.Net.WebException'发生在System.dll中   附加信息:远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。

请你帮我删除一个文件夹。

1 个答案:

答案 0 :(得分:5)

  1. 您为DeleteFile电话汇编的网址错误。

    使用:

    path = "ftp://ftp.example.com/" + "/" + ff;
    string server = "ftp://ftp.example.com/";
    

    ftpURL + "/" + ftpDirectory ftp://ftp.example.com/ftp://ftp.example.com//dirftp://ftp.example.com//dirftp://ftp.example.com/dir

    仅使用ftpDirectory

    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpDirectory);
    
    1. 无论如何,您无法删除WebRequestMethods.Ftp.DeleteFile的文件夹。您必须使用WebRequestMethods.Ftp.RemoveDirectory

      ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;
      

      但请注意,即使.RemoveDirectory也只能删除空目录。

      您必须先递归删除文件夹的文件和子文件夹,然后才能删除文件夹本身。

      使用FtpWebRequest实现递归并不容易,特别是因为它不支持MLSD命令(区分文件和文件夹的唯一可靠方法)。有关详细信息,请参阅我对C# Download all files and subdirectories through FTP的回答。

      或者,使用另一个支持递归操作的FTP库。

      例如,使用WinSCP .NET assembly,您可以使用Session.RemoveFiles在一次调用中删除包含其内容的文件夹:

      SessionOptions sessionOptions = new SessionOptions
      {
          Protocol = Protocol.Ftp,
          HostName = "ftp.example.com",
          UserName = "username",
          Password = "mypassword",
      };
      
      using (Session session = new Session())
      {
          session.Open(sessionOptions);
          session.RemoveFiles("/" + ff);
      }
      

      (我是WinSCP的作者)

相关问题