मुफ्त एफ़टीपी लाइब्रेरी [बंद]


94

क्या आप C # के लिए एक निशुल्क FTP लाइब्रेरी (क्लास) सुझा सकते हैं।

कक्षा को अच्छी तरह से लिखा जाना है, और अच्छा प्रदर्शन करना है।

जवाबों:


74

आप FluentFTP पर विचार कर सकते हैं , जिसे पहले System.Net.FtpClient के रूप में जाना जाता है ।

यह द 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
जिवदी

1
ध्यान दें कि संकलित पुस्तकालय .NET 3 के लिए हैं, लेकिन कोड को 2.0 में परिवर्तित करने के लिए तुच्छ है
डीनना

3
यह भी उपलब्ध है als NuGet पैकेज: System.Net.FtpClient
Jeroen K

1
फ़ाइल के बजाय कुछ हद तक कम आसान (अब?), स्ट्रीम s = कनेक्शन। PDFRead (फ़ाइल नाम)
Jeroen K

2
सच है, लेकिन आप पहले से ही समान सिंटैक्स रखने के लिए आसानी से अपने स्वयं के विस्तार के तरीकों को जोड़ सकते हैं। यहाँ मेरे हैं: pastebin.com/FiKMrH76
Erwin मेयर

20

आप .NET फ्रेमवर्क के साथ आने वाले पुस्तकालयों का उपयोग क्यों नहीं करते हैं: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?

EDIT: 2019 अप्रैल 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
Im 100% यकीन नहीं है, लेकिन उन वर्गों को प्रत्येक अनुरोध पर फिर से कनेक्ट नहीं करता है? अगर ऐसा है तो प्रदर्शन को नुकसान होगा ..
पीटर

22
FtpWebRequestवर्ग केवल बहुत आसान के लिए काम करता है, लेन-देन संबंधी एफ़टीपी कार्यों, इस तरह के डाउनलोड करने या अलग-अलग फ़ाइलों को अपलोड करने के रूप में है कि अनुरोध / प्रतिक्रिया तर्ज पर तैयार किया जा सकता। एफ़टीपी फ़ोल्डर संरचना बनाने या उसी सत्र में अपलोड और डाउनलोड करने जैसे कार्यों को करने के लिए इसका उपयोग करना बहुत मुश्किल है।
दाई

1
“मुझे चाहिए” को ऑपरेटिव शब्द है। संभवत: यह आपके समय के लायक नहीं है कि आप केवल अपने यूनिट परीक्षणों में काम करने वाले फीटपाइबेरेसन उदाहरणों को डिबग करें।
चेजाह्रोर्स्की 20

1
बहुत ... बुरा घटक - आप आसान सूची फ़ाइलों या फ़ोल्डरों को नहीं दे सकते हैं, यदि आप खराब यूआरएल प्रदान करते हैं - यह बिना किसी अपवाद के चलेगा, लेकिन HTML को संदेश के साथ लौटा देगा - मुझे कोई फ़ाइल नहीं मिली (इसलिए, आपको इसकी आवश्यकता है उस html को पार्स करें) ... मुझे लगता है कि Microsoft कुछ समय बिता सकता है और सामान्य पुस्तकालय बना सकता है और यह नहीं ...
VikciaR

2
MS प्रलेखन docs.microsoft.com/en-us/dotnet/api/… नई परियोजनाओं के लिए उपयोग नहीं करने के लिए कहता है, और github.com/dotnet/platform-compat/blob/master/docs/DE0003.d को इंगित करता है जिसमें इस प्रश्न की ओर मुड़ें
पीट किरखम

12

edtFTPnet .NET के लिए एक मुफ़्त, तेज़, खुला स्रोत एफ़टीपी लाइब्रेरी है, जिसे C # में लिखा गया है।


7
साइट की दिनांकित डिज़ाइन मुझे लाइब्रेरी की गुणवत्ता के बारे में अधिक आत्मविश्वास नहीं देती है।
जीरो के

1
यह LGPL लाइसेंस के तहत है। इसलिए यदि आप वाणिज्यिक उत्पाद / सेवा का विकास कर रहे हैं, तो आप इस बात को खोल रहे हैं कि आप क्या कर सकते हैं और आप क्या नहीं कर सकते, क्या शामिल करें, आदि और एसओ और अन्य पर कई उत्तर उस मामले पर अलग-अलग राय देते हैं। ..
ओलेक्सी Vynnychenko

मैं इस सॉफ्टवेयर के डेवलपर्स में से एक हूं। मैंने सोचा था कि मैं सिर्फ चिप लगाऊंगा, हमने कभी भी एलजीपीएल उल्लंघन पर किसी का पीछा नहीं किया है या यहां तक ​​कि ऐसे किसी भी मामले को देखने के लिए सोचा है। मुख्य कारण हमने इस लाइसेंस को चुना जब पुस्तकालय पहली बार 2003 में प्रकाशित हुआ था कि एलजीपीएल एकमात्र ऐसा व्यापक रूप से ज्ञात लाइसेंस था। अभी कई और विकल्प हैं और हमें शायद एक और लाइसेंस मिल जाना चाहिए जो हमारे उद्देश्य को बेहतर बनाता है। केवल एक चीज जिसे हम सुनिश्चित करना चाहते हैं, वह यह है कि कोई भी हमारे उत्पाद का उपयोग एक वाणिज्यिक उत्पाद बनाने के लिए नहीं करता है जो इसके साथ प्रतिस्पर्धा करता है। किसी को भी कम प्याज के लाइसेंस के लिए सुझाव मिले?
हंसा

1
वैसे, अगर आपके कानूनी लोग कभी इसके बारे में चिंतित हैं, तो आप $ 99 के लिए अधिक उदार लाइसेंस खरीद सकते हैं। ओह, और वेबसाइट भी अब अपडेट हो गई है :)। उत्पाद अभी भी बहुत अधिक जीवित है, आंशिक रूप से क्योंकि यह एक और बहुत ही सफल उत्पाद का एक हिस्सा है, अर्थात कम्प्लीट एफटीपी। इस समस्या को इंगित करने के लिए धन्यवाद ओलेक्सी। हम इसकी चर्चा करेंगे।
हंसा

7

मुझे एलेक्स FTPS क्लाइंट पसंद है जो एक Microsoft MVP नाम एलेक्स पिलोटी द्वारा लिखा गया है। यह एक C # लाइब्रेरी है जिसका उपयोग आप कंसोल एप्स, विंडोज फॉर्म, पावरशेल, ASP.NET (किसी भी .NET लैंग्वेज में) कर सकते हैं। यदि आपके पास एक मल्टीथ्रेडेड ऐप है, तो आपको सिंक्रोनाइज़ करने के लिए लाइब्रेरी को कॉन्फ़िगर करना होगा, लेकिन कुल मिलाकर एक अच्छा क्लाइंट जो आपको सबसे अधिक संभावना है, जो आपको चाहिए।



1

मैंने सिर्फ एक लेख पोस्ट किया है जो एफ़टीपी ग्राहक वर्ग और एफ़टीपी उपयोगकर्ता नियंत्रण दोनों प्रस्तुत करता है।

वे सरल हैं और बहुत तेज़ नहीं हैं, लेकिन उपयोग करना बहुत आसान है और सभी स्रोत कोड शामिल हैं। उपयोगकर्ताओं को आपके एप्लिकेशन से FTP निर्देशिकाओं को नेविगेट करने की अनुमति देने के लिए उपयोगकर्ता नियंत्रण को बस एक फॉर्म पर छोड़ दें।


1

एक ही मामले में बहुत सारी जांच के बाद मुझे यह बहुत सुविधाजनक लगा: https://github.com/flagbug/FlubFpp

उदाहरण के लिए (मानक .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);
        }
    }

फ़्लैगफ़्ट, Windows ftp क्लाइंट कॉल का उपयोग करता है। यह एक अच्छी या बुरी बात नहीं है, लेकिन इसका मतलब यह है कि पुस्तकालय उन त्रुटियों के लिए अतिसंवेदनशील है जो विंडोज़ एफटीपी कॉल फेंक सकते हैं
जॉन मोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.