C # 용 무료 FTP 라이브러리 (클래스)를 추천 해 주시겠습니까?
수업은 잘 작성되어야하고 좋은 성적을 가져야합니다.
답변:
이전에 System.Net.FtpClient로 알려진 FluentFTP를 고려할 수 있습니다 .
MIT 라이선스에 따라 릴리스되고 NuGet (FluentFTP)에서 사용할 수 있습니다.
.NET 프레임 워크와 함께 제공되는 라이브러리를 사용하지 않는 이유 : http://msdn.microsoft.com/en-us/library/ms229718.aspx ?
수정 : 2019 년 4 월 by https://stackoverflow.com/users/1527/ 이 답변은 더 이상 유효하지 않습니다. 다른 답변은 Microsoft에서 보증합니다.
더 이상 사용을 권장하지 않는 Microsoft에서 설계했습니다.
새로운 개발에는 FtpWebRequest 클래스를 사용하지 않는 것이 좋습니다. FtpWebRequest에 대한 자세한 내용 및 대안은 GitHub에서 WebRequest를 사용하면 안됨을 참조하세요. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )
'WebRequest를 사용해서는 안 됨'페이지는이 질문을 최종 라이브러리 목록으로 표시합니다!
FtpWebRequest
클래스는 개별 파일 다운로드 또는 업로드와 같이 요청 / 응답 패턴에서 모델링 할 수있는 간단한 트랜잭션 FTP 작업에만 실제로 작동합니다. FTP 폴더 구조를 생성하거나 동일한 세션에서 업로드 및 다운로드와 같은 작업을 수행하는 데 사용하는 것은 매우 어렵습니다.
edtFTPnet 은 C #으로 작성된 .NET 용 무료 빠른 오픈 소스 FTP 라이브러리입니다.
저는 Microsoft MVP 이름 Alex Pilotti로 작성된 Alex FTPS Client 를 좋아 합니다. 콘솔 앱, Windows Forms, PowerShell, ASP.NET (모든 .NET 언어)에서 사용할 수있는 C # 라이브러리입니다. 다중 스레드 앱이있는 경우 라이브러리를 동기화하여 실행하도록 구성해야하지만 전반적으로 필요한 것을 얻을 수있는 좋은 클라이언트입니다.
CodePlex 또는 http://www.enterprisedt.com/general/press/20060818.html 에서 사용할 수 있습니다 .
같은 문제에 대해 많은 조사를 한 후이 문제가 매우 편리하다는 것을 알았습니다 : 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();//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