무료 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.