【问题标题】:I cannot delete a file via FTP我无法通过 FTP 删除文件
【发布时间】:2020-04-22 20:18:00
【问题描述】:

我正在尝试通过 FTP 删除文件夹中的所有文件。下面是我正在尝试的代码。

Files 是一个字符串数组,每个字符串都是文件夹中的文件名及其扩展名。

当我运行它时,我得到了 206 的回复,但是当我查看文件夹时,所有文件都保留了下来。我尝试了以下代码的变体,包括添加延迟,但仍然无法删除文件。我错过了什么?

 foreach (var FileName2 in Files)
     {
       if (File.Exists(txtbx_save_backup_to.Text + "/" + FileName2))
                {
                    FtpWebRequest Delrequest = (FtpWebRequest)WebRequest.Create(ftp_address + "/Temp/Backup/" + FileName2);
                   Delrequest.Credentials = new NetworkCredential(username, password);
                   Delrequest.Method = WebRequestMethods.Ftp.DeleteFile;

                    Task.Delay(1000);

                    using (FtpWebResponse response2 = (FtpWebResponse)request.GetResponse())
                    {
                        rchtxtbx_backup_comms.AppendText("Deleted File, status " + response2.StatusDescription + "\r");
                        rchtxtbx_backup_comms.ScrollToCaret();
                    }
                }
            }

【问题讨论】:

  • this 回答你的问题了吗?
  • 显示log file。 + 您可以使用任何(GUI/命令行)FTP 客户端成功删除这些文件吗?

标签: c# .net ftp


【解决方案1】:

上面的cmets以迂回的方式给了我我需要的线索,所以感谢你的回答。

我错过了“执行”删除请求的部分。所以我添加了以下内容,现在它可以工作了。

WebResponse GetResponse = Delrequest.GetResponse();
Stream GResponseStream = GetResponse.GetResponseStream();

我去掉了等待,现在是完整的代码

foreach (var FileName2 in Files)
            {
                if (File.Exists(txtbx_save_backup_to.Text + "/" + FileName2))
                {
                    FtpWebRequest Delrequest = (FtpWebRequest)WebRequest.Create(ftp_address + "/Temp/Backup/" + FileName2);
                   Delrequest.Credentials = new NetworkCredential(username, password);
                   Delrequest.Method = WebRequestMethods.Ftp.DeleteFile;

                    //Action request
                    WebResponse GetResponse = Delrequest.GetResponse();
                    Stream GResponseStream = GetResponse.GetResponseStream();

                    using (FtpWebResponse response2 = (FtpWebResponse)request.GetResponse())
                    {
                        rchtxtbx_backup_comms.AppendText("Deleted File, status " + response2.StatusDescription + "\r");
                        rchtxtbx_backup_comms.ScrollToCaret();
                    }

                    GResponseStream.Close();
                }
            }

【讨论】:

  • 好的,所以实际的问题是request.GetResponse() 应该是Delrequest.,而不是request.——您当前的代码仍然会显示其他请求的状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2021-07-03
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
相关资源
最近更新 更多