你能推荐一个适用于C#的免费FTP库(类)吗?
这个库(类)必须编写良好,并且具有良好的性能。
你可以考虑使用FluentFTP,它以前被称为System.Net.FtpClient。
它是在MIT许可证下发布的,并且可以在NuGet(FluentFTP)上获得。
而“WebRequest 不应使用”页面则指向此问题作为库的明确列表!我们不建议您在新开发中使用 FtpWebRequest 类。有关更多信息和 FtpWebRequest 的替代方法,请参见“GitHub 上 WebRequest 不应使用”。(https://learn.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2)
FtpWebRequest
类只适用于可以基于请求/响应模式建模的简单事务性 FTP 操作,如下载或上传单个文件。很难使用它执行创建 FTP 文件夹结构或在同一会话中上传和下载等任务。 - DaiedtFTPnet 是一个用C#编写的免费、快速、开源的.NET FTP库。
我喜欢由微软MVP Alex Pilotti编写的Alex FTPS客户端。这是一个可以在控制台应用程序、Windows表单、PowerShell、ASP.NET(任何.NET语言)中使用的C#库。如果您有一个多线程应用程序,您需要配置库以同步运行,但总体来说,这是一个很好的客户端,很可能能满足您的需求。
我刚刚发布了一篇文章,介绍了一个FTP客户端类和一个FTP用户控件。
它们很简单,速度不是很快,但非常易于使用,并且所有源代码都已包含。只需将用户控件拖放到表单上,即可允许用户从您的应用程序中浏览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);
}
}
`FtpListItem[] items = ftp.GetListing();//在这里,您可以获取包含类型、名称、修改日期和其他属性的列表。 FtpFile file = new FtpFile(ftp,“8051812.xml”);//要获取的文件
file.Download(“c:\8051812.xml”);//下载 file.Name =“8051814.xml”;//更改名称以获取新名称 file.Download(“c:\8051814.xml”); ftp.Disconnect();//关闭` - Zviadi