무료 FTP 라이브러리 [폐쇄]


94

C # 용 무료 FTP 라이브러리 (클래스)를 추천 해 주시겠습니까?

수업은 잘 작성되어야하고 좋은 성적을 가져야합니다.

답변:


74

이전에 System.Net.FtpClient로 알려진 FluentFTP를 고려할 수 있습니다 .

MIT 라이선스에 따라 릴리스되고 NuGet (FluentFTP)에서 사용할 수 있습니다.


6
감사합니다!!! 이것은 정말 잘 작동합니다! 그것은 정확한 날짜 시간과 함께 디렉토리를 나열합니다 :)))) 그리고 빠릅니다! 샘플 코드 : FtpClient ftp = new FtpClient (txtUsername.Text, txtPassword.Text, txtFTPAddress.Text); 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
Zviadi

1
컴파일 된 라이브러리는 .NET 3 용이지만 코드는 2.0으로 변환하는 것이 간단합니다.
Deanna

3
NuGet 패키지도 사용할 수 있습니다. System.Net.FtpClient
Jeroen K

1
file.Download, Stream s = connection.OpenRead (filename)
Jeroen K

2
사실이지만 이전과 동일한 구문을 갖도록 자체 확장 메소드를 쉽게 추가 할 수 있습니다. 여기에 내 위치 : pastebin.com/FiKMrH76
어윈 마이어

20

.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를 사용해서는 안 됨'페이지는이 질문을 최종 라이브러리 목록으로 표시합니다!


3
100 % 확실하지는 않지만 해당 클래스가 각 요청에 다시 연결되지 않습니까? 이런 경우 그 성능이 저하 것입니다 ..
피터

22
FtpWebRequest클래스는 개별 파일 다운로드 또는 업로드와 같이 요청 / 응답 패턴에서 모델링 할 수있는 간단한 트랜잭션 FTP 작업에만 실제로 작동합니다. FTP 폴더 구조를 생성하거나 동일한 세션에서 업로드 및 다운로드와 같은 작업을 수행하는 데 사용하는 것은 매우 어렵습니다.
다이

1
"Should"는 작동 단어입니다. 단위 테스트에서만 작동하는 FtpWebRequest 예제를 디버깅하는 데 시간을 할애 할 가치가 없습니다.
CZahrobsky

1
매우 ... 잘못된 구성 요소-잘못된 URL을 제공하면 파일이나 폴더를 쉽게 나열 할 수 없습니다. 예외없이 실행되지만 메시지와 함께 html을 반환합니다.-파일을 찾을 수 없습니다. ... 나는 ...이 시간을 보내고 정상 라이브러리를 만들 수 없습니다 마이크로 소프트 생각) HTML 있다는 분석
VikciaR

2
MS 문서 docs.microsoft.com/en-us/dotnet/api/… 는 새 프로젝트에 사용하지 말라고 하며, github.com/dotnet/platform-compat/blob/master/docs/DE0003.md 를 가리 킵니다 . 이 질문에 포인트를 설정
피트 Kirkham에게

12

edtFTPnet 은 C #으로 작성된 .NET 용 무료 빠른 오픈 소스 FTP 라이브러리입니다.


7
사이트의 날짜가 지정된 디자인은 도서관의 품질에 대해 많은 확신을주지 못합니다.
Jeroen K

1
LGPL 라이선스하에 있습니다. 따라서 상업용 제품 / 서비스를 개발하는 경우 할 수있는 작업과 할 수없는 작업, 포함 할 항목 등의 웜 캔을 열 수 있습니다. SO 및 기타에 대한 여러 답변은 그 문제에 대해 다른 의견을 제공합니다. ...
Oleksii Vynnychenko

저는이 소프트웨어의 개발자 중 한 명입니다. 나는 우리가 LGPL 위반에 대해 누구도 추적하지 않았거나 그러한 경우를 찾을 생각조차하지 않았다는 점을 감안할 것이라고 생각했습니다. 2003 년 라이브러리가 처음 출판되었을 때이 라이센스를 선택한 주된 이유는 LGPL이 널리 알려진 유일한 라이센스 중 하나이기 때문입니다. 현재 더 많은 옵션이 있으며 우리의 목표에 더 적합한 다른 라이센스를 찾아야 할 것입니다. 우리가 보장하고 싶은 유일한 것은 아무도 우리 소프트웨어를 사용하여 경쟁하는 상용 제품을 만드는 데 사용하지 않는다는 것입니다. 누구든지 덜 부담스러운 라이센스에 대한 제안이 있습니까?
HansA

1
그건 그렇고, 당신의 법적인 사람들이 그것에 대해 걱정한다면, 당신은 $ 99에 더 자유로운 라이센스를 구입할 수 있습니다. 아, 그리고 웹 사이트도 지금 업데이트되었습니다 :). 이 제품은 여전히 ​​매우 잘 살아 있습니다. 부분적으로는 CompleteFTP와 같은 다른 매우 성공적인 제품의 일부이기 때문입니다. 이 문제를 지적 해 주신 Oleksii에게 감사드립니다. 우리는 그것에 대해 논의 할 것입니다.
HansA 2017 년

7

저는 Microsoft MVP 이름 Alex Pilotti로 작성된 Alex FTPS Client 를 좋아 합니다. 콘솔 앱, Windows Forms, PowerShell, ASP.NET (모든 .NET 언어)에서 사용할 수있는 C # 라이브러리입니다. 다중 스레드 앱이있는 경우 라이브러리를 동기화하여 실행하도록 구성해야하지만 전반적으로 필요한 것을 얻을 수있는 좋은 클라이언트입니다.



1

방금 FTP 클라이언트 클래스와 FTP 사용자 컨트롤을 모두 제공 하는 기사게시했습니다 .

간단하고 빠르지는 않지만 사용하기 매우 쉽고 모든 소스 코드가 포함되어 있습니다. 사용자 컨트롤을 양식에 놓기 만하면 사용자가 애플리케이션에서 FTP 디렉토리를 탐색 할 수 있습니다.


1

같은 문제에 대해 많은 조사를 한 후이 문제가 매우 편리하다는 것을 알았습니다 : 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);
        }
    }

flagftp는 Windows ftp 클라이언트 호출을 사용합니다. 이것은 좋거나 나쁘지는 않지만 라이브러리가 Windows ftp 호출이 던질 수있는 것과 동일한 오류에 취약하다는 것을 의미합니다
John Mott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.