你能为C#推荐一个免费的FTP库(类)吗?
该课程必须写得很好,并且表现良好。
您可以考虑FluentFTP,以前称为System.Net.FtpClient。
它在The MIT License下发布,可在NuGet(FluentFTP)上获得。
为什么不使用.NET框架附带的库:http://msdn.microsoft.com/en-us/library/ms229718.aspx?
编辑:2019年4月由https://stackoverflow.com/users/1527/这个答案不再有效。其他答案得到了微软的认可。
它们是由Microsoft设计的,不再建议使用它们:
我们不建议您使用FtpWebRequest类进行新开发。有关FtpWebRequest的更多信息和替代方法,请参阅GitHub上不应使用的WebRequest。 (https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2)
“WebRequest不应该被使用”页面反过来指向这个问题作为最终的库列表!
edtFTPnet是一个免费,快速,开源的.NET库,用C#编写。
我喜欢Alex FTPS Client,它是由微软MVP名称Alex Pilotti编写的。它是一个C#库,可以在Console应用程序,Windows窗体,PowerShell,ASP.NET(任何.NET语言)中使用。如果你有一个多线程应用程序,你将不得不配置库同步运行,但总体而言,一个好的客户端很可能会得到你所需要的。
我只是提供了一个FTP客户端类和一个FTP用户控件的posted an article。
它们很简单并且速度不是很快,但是非常容易使用,并且包含所有源代码。只需将用户控件拖放到表单上,即可允许用户从应用程序中导航FTP目录。
经过对同一问题的大量调查后,我发现这个非常方便:https://github.com/flagbug/FlagFtp
例如(尝试使用标准的.net“库” - 这将是一个真正的痛苦) - >递归地恢复FTP服务器上的所有文件:
public IEnumerable<FtpFileInfo> GetFiles(string server, string user, string password)
{
var credentials = new NetworkCredential(user, password);
var baseUri = new Uri("ftp://" + server + "/");
var files = new List<FtpFileInfo>();
AddFilesFromSubdirectory(files, baseUri, credentials);
return files;
}
private void AddFilesFromSubdirectory(List<FtpFileInfo> files, Uri uri, NetworkCredential credentials)
{
var client = new FtpClient(credentials);
var lookedUpFiles = client.GetFiles(uri);
files.AddRange(lookedUpFiles);
foreach (var subDirectory in client.GetDirectories(uri))
{
AddFilesFromSubdirectory(files, subDirectory.Uri, credentials);
}
}