【问题标题】:Using .NET 2.0, how do I FTP to a server, get a file, and delete the file?使用 .NET 2.0,我如何通过 FTP 连接到服务器、获取文件并删除文件?
【发布时间】:2009-03-04 20:15:31
【问题描述】:

.NET (C#) 是否为 FTP 内置了库?我不需要任何疯狂的东西......非常简单。

我需要:

  1. FTP 到一个帐户
  2. 检测连接是否被拒绝
  3. 获取文本文件
  4. 删除文本文件

最简单的方法是什么?

【问题讨论】:

  • 它不能满足您的需求,但请考虑 FTP 是一种未加密的协议。如果您有能力建议更改需求,您可能希望推动加密协议。
  • FTP可以封装在任何加密通道中,FTP本身也支持加密。什么是“加密协议”?
  • 身份验证数据以明文形式传递——确保您可以包装它——这是一个很好的解决方案。我想我应该说它不是一个考虑到加密的协议。但这似乎很明显......我刚刚看到太多人认为 FTP“密码”就足够了。
  • FTP 也可以在 TLS/SSL 加密通道上运行。它通常被称为 FTPS 或 FTP/SSL。 FTP 和 FTPS 的关系类似于 HTTP 和 HTTPS 的关系。还有另一种选择 - SFTP(即 SSH 文件传输协议)。

标签: c# .net .net-2.0 ftp


【解决方案1】:

使用FtpWebRequest 类,或普通的旧WebClient 类。

FTP 到一个帐户并检索一个文件:

WebClient request = new WebClient();
request.Credentials = 
    new NetworkCredential("anonymous", "janeDoe@contoso.com");
try 
{
    // serverUri here uses the FTP scheme ("ftp://").
    byte[] newFileData = request.DownloadData(serverUri.ToString());
    string fileString = Encoding.UTF8.GetString(newFileData);
}
catch (WebException ex)
{
    // Detect and handle login failures etc here
}

删除文件:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Method = WebRequestMethods.Ftp.DeleteFile;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Delete status: {0}", response.StatusDescription);  
response.Close();

(代码示例来自 MSDN。)

【讨论】:

    【解决方案2】:

    This article 使用 .NET 2.0 为 FTP 客户端实现 GUI,并提供完整的示例源代码。

    示例代码包括连接、下载和上传以及良好的 cmets 和解释。

    【讨论】:

      【解决方案3】:

      只需使用FtpWebRequest 类。它已经处理了您需要的所有事情。

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        使用edtFTPnet,一个免费的开源 .NET FTP 库,可以满足您的一切需求。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-09
          • 1970-01-01
          • 2018-09-15
          • 2011-10-11
          • 2015-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多