C # için ücretsiz bir FTP kitaplığı (sınıfı) önerebilir misiniz?
Sınıf iyi yazılmalı ve iyi performans göstermelidir.
C # için ücretsiz bir FTP kitaplığı (sınıfı) önerebilir misiniz?
Sınıf iyi yazılmalı ve iyi performans göstermelidir.
Yanıtlar:
Daha önce System.Net.FtpClient olarak bilinen FluentFTP'yi düşünebilirsiniz .
The MIT License altında yayınlandı ve NuGet'te (FluentFTP) kullanılabilir.
Neden .NET çerçevesiyle birlikte gelen kitaplıkları kullanmıyorsunuz: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?
DÜZENLEME: 2019 Nisan, https://stackoverflow.com/users/1527/ Bu yanıt artık geçerli değil. Diğer yanıtlar Microsoft tarafından onaylanmıştır.
Artık kullanılmalarını önermeyen Microsoft tarafından tasarlandılar:
Yeni geliştirme için FtpWebRequest sınıfını kullanmanızı önermiyoruz. FtpWebRequest'e alternatifler ve daha fazla bilgi için bkz.WebRequest GitHub'da kullanılmamalıdır. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )
'WebRequest kullanılmamalıdır' sayfası da kitaplıkların kesin listesi olarak bu soruya işaret ediyor!
FtpWebRequest
Sınıf yalnızca gerçekten basit için çalışır, bu tür indirme veya dosyaları tek tek yükleme gibi istek / yanıt desen üzerinde modellenebilir işlemsel FTP eylemler. Bir FTP klasör yapısı oluşturmak veya aynı oturumda karşıya yüklemek ve indirmek gibi görevleri gerçekleştirmek için kullanmak çok zordur.
edtFTPnet , .NET için C # ile yazılmış ücretsiz, hızlı, açık kaynaklı bir FTP kitaplığıdır.
Microsoft MVP adı Alex Pilotti tarafından yazılan Alex FTPS İstemcisini seviyorum . Konsol uygulamalarında, Windows Forms'da, PowerShell'de, ASP.NET'te (herhangi bir .NET dilinde) kullanabileceğiniz bir C # kitaplığıdır. Çok iş parçacıklı bir uygulamanız varsa, kitaplığı eşzamanlı olarak çalışacak şekilde yapılandırmanız gerekir, ancak genel olarak ihtiyacınız olanı size büyük olasılıkla sağlayacak iyi bir istemci.
CodePlex veya http://www.enterprisedt.com/general/press/20060818.html üzerindekileri kullanabilirsiniz.
Ben sadece ettik bir makale yayınlanmıştır olduğu hediyeler bir FTP istemcisi sınıf hem de bir FTP kullanıcı kontrolü.
Basittirler ve çok hızlı değildirler, ancak kullanımı çok kolaydır ve tüm kaynak kodları dahildir. Kullanıcıların uygulamanızdan FTP dizinlerinde gezinmesine izin vermek için kullanıcı denetimini bir forma bırakın.
Aynı konuyla ilgili birçok araştırmadan sonra, bunu son derece uygun buldum: https://github.com/flagbug/FlagFtp
Örneğin (bunu standart .net "kitaplığı" ile yapmayı deneyin - bu gerçek bir acı olacaktır) -> FTP sunucusundaki tüm dosyaları yinelemeli olarak geri almak:
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();//here you can get list with type, name, modified date and other properties. FtpFile file = new FtpFile(ftp, "8051812.xml");//file to get file.Download("c:\\8051812.xml");//download file.Name = "8051814.xml";//change name to get new file.Download("c:\\8051814.xml"); ftp.Disconnect();//close