【问题标题】:FTP request download a file and delete immediatelyFTP请求下载文件并立即删除
【发布时间】:2014-01-07 13:21:50
【问题描述】:

我有一个使用 ftprequest 下载文件的代码

FtpWebRequest requestFileDownload = (FtpWebRequest)WebRequest.Create("ftp://localhost/Source/" + fileName);
requestFileDownload.Credentials = new NetworkCredential("khanrahim", "arkhan22");
requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile;

FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();

Stream responseStream = responseFileDownload.GetResponseStream();
FileStream writeStream = new FileStream(localPath + fileName, FileMode.Create);  

int Length = 2048;
Byte[] buffer = new Byte[Length];
int bytesRead = responseStream.Read(buffer, 0, Length);               

while (bytesRead > 0)
{
  writeStream.Write(buffer, 0, bytesRead);
  bytesRead = responseStream.Read(buffer, 0, Length);
}   

responseStream.Close();             
writeStream.Close();

现在我需要的是,一旦下载完成,我需要使用相同的请求从 ftpserver 中删除文件。

我确实尝试过添加 requestFileDownload.Method = WebRequestMethods.Ftp.deleteFile; 在关闭请求之前..但它不起作用。 如何使用相同的请求删除文件。

【问题讨论】:

  • 在您附加之后,您是否使用 FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse(); 执行它?只是一个猜测,但也许会做到这一点
  • 我确实这样做了,但我收到了一个错误,例如“服务器请求完成后无法执行此操作”

标签: c# ftp


【解决方案1】:

WebRequest.Create 创建的对象只能用于一个请求。由于 FTP 中没有“GET 和 DELETE”方法,您需要创建另一个具有相同配置的 FtpWebRequest,并使用新的 FtpWebRequest 发送删除请求。

【讨论】:

  • 在这种情况下如何避免重新登录
  • @user2799127 - 你不能 - 使用 FtpWebRequest 你不能发出 2 个命令并且必须为每个请求重新登录。如果您需要通过多个请求与同一服务器通信 - 请考虑 searching for full FTP client
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 2014-10-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多