ห้องสมุด FTP ฟรี [ปิด]


95

คุณสามารถแนะนำไลบรารี FTP (คลาส) ฟรีสำหรับ C # ได้ไหม

ชั้นเรียนจะต้องเขียนได้ดีและมีผลงานที่ดี

คำตอบ:


75

คุณอาจพิจารณาFluentFTPซึ่งก่อนหน้านี้รู้จักกันในชื่อSystem.Net.FtpClient System.Net.FtpClient

เผยแพร่ภายใต้ใบอนุญาต MITและพร้อมใช้งานบน NuGet (FluentFTP)


6
ขอบคุณ!!! ได้ผลดีมาก! มันแสดงรายการไดเร็กทอรีพร้อมวันที่เวลาที่ถูกต้อง :)))) และรวดเร็ว! โค้ดตัวอย่าง: FtpClient ftp = 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
นอกจากนี้ยังมีแพ็คเกจ als NuGet: System.Net.FtpClient
Jeroen K

1
ค่อนข้างง่ายน้อยกว่า (ตอนนี้?) แทนที่จะเป็นไฟล์ดาวน์โหลดสตรีม s = การเชื่อมต่อ OpenRead (ชื่อไฟล์)
Jeroen K

2
จริง แต่คุณสามารถเพิ่มวิธีการส่วนขยายของคุณเองเพื่อให้มีไวยากรณ์เหมือนเดิมได้อย่างง่ายดาย นี่คือของฉัน: pastebin.com/FiKMrH76
Erwin Mayer

20

ทำไมคุณไม่ใช้ห้องสมุดที่มาพร้อมกับกรอบ NET: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?

แก้ไข: 2019 เมษายนโดยhttps://stackoverflow.com/users/1527/ คำตอบนี้ใช้ไม่ได้อีกต่อไป คำตอบอื่น ๆ รับรองโดย Microsoft

ได้รับการออกแบบโดย Microsoft ซึ่งไม่แนะนำให้ใช้อีกต่อไป:

เราไม่แนะนำให้คุณใช้คลาส FtpWebRequest สำหรับการพัฒนาใหม่ สำหรับข้อมูลเพิ่มเติมและทางเลือกอื่นสำหรับ FtpWebRequest โปรดดูที่ WebRequest ไม่ควรใช้บน GitHub ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )

หน้า 'WebRequest ไม่ควรใช้' ชี้ไปที่คำถามนี้เป็นรายการสุดท้ายของไลบรารี!


3
ฉันไม่แน่ใจ 100% แต่ชั้นเรียนเหล่านั้นไม่ได้เชื่อมต่อใหม่ในแต่ละคำขอใช่หรือไม่ หากเป็นเช่นนั้นการแสดงจะต้องทนทุกข์ทรมาน ..
ปีเตอร์

22
FtpWebRequestชั้นเดียวจริงๆทำงานให้ง่ายกระทำ FTP การทำธุรกรรมที่สามารถจำลองในรูปแบบขอ / การตอบสนองเช่นการดาวน์โหลดหรืออัปโหลดไฟล์ของแต่ละบุคคล มันยากมากที่จะใช้เพื่อทำงานเช่นการสร้างโครงสร้างโฟลเดอร์ FTP หรืออัปโหลดและดาวน์โหลดในเซสชันเดียวกัน
ได๋

1
"ควร" เป็นคำผ่าตัด อาจไม่คุ้มค่ากับเวลาของคุณในการดีบักตัวอย่าง FtpWebRequest ที่ใช้ได้เฉพาะในการทดสอบหน่วยของคุณ
CZahrobsky

1
มาก ... องค์ประกอบที่ไม่ดี - คุณไม่สามารถแสดงรายการไฟล์หรือโฟลเดอร์ได้อย่างง่ายดายหากคุณระบุ url ที่ไม่ถูกต้อง - มันจะทำงานโดยไม่มีข้อยกเว้นใด ๆ แต่จะส่งคืน html พร้อมข้อความ - ฉันไม่พบไฟล์ใด ๆ (ดังนั้นคุณต้อง แยกวิเคราะห์ html นั้น) ... ฉันคิดว่า microsoft สามารถใช้เวลาพอสมควรและสร้างไลบรารีปกติไม่ใช่สิ่งนี้ ...
VikciaR

2
เอกสาร MS docs.microsoft.com/en-us/dotnet/api/…บอกว่าห้ามใช้สำหรับโปรเจ็กต์ใหม่และชี้ไปที่github.com/dotnet/platform-compat/blob/master/docs/DE0003.mdซึ่งใน ชี้ไปที่คำถามนี้
พีทเคิร์กแฮม

12

edtFTPnetเป็นไลบรารี FTP แบบโอเพนซอร์สที่ฟรีและรวดเร็วสำหรับ. NET ซึ่งเขียนด้วยภาษา C #


7
การออกแบบที่เก่าแก่ของไซต์ไม่ได้ทำให้ฉันมั่นใจมากนักเกี่ยวกับคุณภาพของห้องสมุด
Jeroen K

1
อยู่ภายใต้ใบอนุญาต LGPL ดังนั้นหากคุณกำลังพัฒนาผลิตภัณฑ์ / บริการเชิงพาณิชย์คุณกำลังเปิดเวิร์มในสิ่งที่คุณทำได้และสิ่งที่คุณทำไม่ได้สิ่งที่ควรรวมไว้ด้วย ฯลฯ และคำตอบหลายคำใน SO และอื่น ๆ ก็ให้ความเห็นที่แตกต่างกันในเรื่องนั้น ..
Oleksii Vynnychenko

ฉันเป็นหนึ่งในผู้พัฒนาซอฟต์แวร์นี้ ฉันคิดว่าฉันแค่ยอมรับว่าเราไม่เคยติดตามใครเรื่องการละเมิด LGPL หรือแม้แต่คิดที่จะมองหากรณีเช่นนี้ เหตุผลหลักที่เราเลือกใบอนุญาตนี้เมื่อห้องสมุดเผยแพร่ครั้งแรกในปี 2546 คือ LGPL เป็นหนึ่งในใบอนุญาตที่รู้จักกันอย่างแพร่หลาย ตอนนี้มีตัวเลือกอื่น ๆ อีกมากมายและเราควรจะหาใบอนุญาตอื่นที่เหมาะกับเป้าหมายของเรา สิ่งเดียวที่เราต้องการให้แน่ใจคือไม่มีใครใช้ซอฟต์แวร์ของเราเพื่อสร้างผลิตภัณฑ์เชิงพาณิชย์ที่แข่งขันกับซอฟต์แวร์นี้ ใครมีข้อเสนอแนะสำหรับใบอนุญาตที่ยุ่งยากน้อยกว่านี้?
HansA

1
อย่างไรก็ตามหากบุคคลทางกฎหมายของคุณกังวลเกี่ยวกับเรื่องนี้คุณสามารถซื้อใบอนุญาตแบบเสรีเพิ่มเติมได้ในราคา $ 99 โอ้และตอนนี้เว็บไซต์ได้รับการปรับปรุงแล้ว :) ผลิตภัณฑ์ยังคงมีชีวิตอยู่มากส่วนหนึ่งเป็นเพราะเป็นส่วนหนึ่งของผลิตภัณฑ์ที่ประสบความสำเร็จอย่างมากนั่นคือ CompleteFTP ขอบคุณ Oleksii ที่ชี้ให้เห็นปัญหานี้ เราจะพูดคุยกัน
HansA

7

ฉันชอบAlex FTPS Clientซึ่งเขียนโดยชื่อ Alex Pilotti ของ Microsoft MVP นี่คือไลบรารี C # ที่คุณสามารถใช้ในแอป Console, Windows Forms, PowerShell, ASP.NET (ในภาษา. NET) หากคุณมีแอพมัลติเธรดคุณจะต้องกำหนดค่าไลบรารีให้ทำงานแบบซิงค์กัน แต่โดยรวมแล้วไคลเอนต์ที่ดีจะได้รับสิ่งที่คุณต้องการ



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 ใช้การเรียกไคลเอ็นต์ ftp ของ Windows นี่ไม่ใช่สิ่งที่ดีหรือไม่ดี แต่หมายความว่าห้องสมุดมีความอ่อนไหวต่อข้อผิดพลาดเดียวกันกับที่การเรียก ftp ของ windows สามารถโยนได้
John Mott
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.