如何使用.NET使用FTP over SSL从FTP服务器下载文件?

时间:2010-10-28 19:19:23

标签: .net ftp ftps

我的帖子标题几乎说明了一切:如何使用.NET使用FTP over SSL从FTP服务器下载文件?我已经阅读了一些内容,并且有几个第三方组件需要购买以完成此功能。

这笔交易是,这是一个非常特殊的需求,并且不会增长太多,所以如果使用FTP通过SSL从FTP服务器下载文件可以使用.NET Framework(即System.Net命名空间或其他东西)来完成)那么那将是最好的。我不需要大量的功能,但如果由于某种原因编码安全的FTP服务器是一个噩梦或通过.NET Framework BCL无法实现,这将是很好的知道,作为第三方.dll可能是最好的。

谢谢!

3 个答案:

答案 0 :(得分:5)

像这样:

var request = (FtpWebRequest)WebRequest.Create("ftp://...");
request.EnableSsl = true;
using (var response = request.GetResponse()) 
using (var data = response.GetResponseStream()) {
    ...
}

答案 1 :(得分:4)

这是我使用的最终VB.NET代码:

    Dim request As System.Net.FtpWebRequest = DirectCast(WebRequest.Create(New Uri("ftp://sftp.domain.com/myFile.txt")), System.Net.FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.DownloadFile
    request.EnableSsl = True
    request.Credentials = New Net.NetworkCredential("username", "password")
    request.UsePassive = True
    Dim response As System.Net.FtpWebResponse = DirectCast(request.GetResponse(), System.Net.FtpWebResponse)

此处详细信息:

在.NET中使用FTP over SSL(SFTP)下载FTP文件:
http://allen-conway-dotnet.blogspot.com/2010/11/download-ftp-files-using-ftp-over-ssl.html

答案 2 :(得分:0)

如果您需要更多功能,例如隐式SSL ,哈希验证或更简洁的语法,您可以使用Ftp.dll FTP/FTPS client

using(Ftp ftp = new Ftp())
{
    ftp.Connect("ftp.server.com");                       
    ftp.Login("user", "password");

    ftp.ChangeFolder("downloads");
    ftp.Download("report.txt", @"c:\report.txt");

    ftp.Close();
}

请注意,这是商业产品,我是作者。