2008-09-17 9 views
61

क्या यह क्षमता नेट के साथ आती है? यदि नहीं, तो सबसे अच्छी मुफ्त लाइब्रेरी क्या है? मुझे ऐसी चीज चाहिए जो कोई समस्या होने पर अच्छे अपवाद फेंक दे, और मुझे इसकी प्रगति की निगरानी करने की अनुमति मिलती है।मैं सी #/.NET में किसी SFTP सर्वर पर फ़ाइल कैसे अपलोड करूं?

+0

प्रश्न भी देखें [.NET के लिए एसएफटीपी पुस्तकालय] (http://stackoverflow.com/questions/530330/sftp- पुस्तकालय-for-net) और [.NET के लिए FTP/SFTP मॉड्यूल] (http: // stackoverflow.com/questions/2731967/ftp-sftp-module-for-net) –

+0

एक और विकल्प रेन्सी एसएसएच.NET है। – CodesInChaos

उत्तर

22

संपादित करें: इस उत्तर के एक लंबे समय पहले से है और अब वैध नहीं है। टिप्पणियां देखें

आप SharpSSH देख सकते हैं। यह बॉक्स के बाहर एसएफटीपी का समर्थन करता है और यह ओपन सोर्स है।

+5

शार्पएसएसएच जावा पुस्तकालयों (जेएसएच और जेसीई) पर आधारित प्रतीत होता है और व्यापक स्रोत कोड ब्राउज़ करने से मुझे विश्वास नहीं होता है कि इस पुस्तकालय को उत्पादन वातावरण में उपयोग किया जा सकता है। थोड़ा तनाव परीक्षण के परिणामस्वरूप अप्रत्याशित अपवाद हुए। –

+1

दुर्भाग्यवश SharpSSH असमर्थित है और उत्पादन के लिए बहुत स्थिर नहीं है। हमारे SFTPBlackbox (http://www.sftp-net.com/) जैसे कुछ व्यवसाय बेहतर काम करेंगे। –

+0

मैं सहमत हूं, मेरे लिए बहुत कमजोर लग रहा है। मुझे यहां "जगह" जावा पोर्ट चीज पसंद नहीं है। – Jeff

2

.net फ्रेमवर्क के भीतर इसके लिए कोई समाधान नहीं है।

http://www.eldos.com/sbb/sftpcompare.php अन-मुक्त विकल्पों की एक सूची को रेखांकित करता है।

आपकी सर्वश्रेष्ठ मुफ्त शर्त Granados का उपयोग करके एसएसएच का विस्तार करना है। http://www.routrek.co.jp/en/product/varaterm/granados.html

+2

ऐसा लगता है कि Granados उत्पादन वातावरण में उपयोग नहीं किया जा सकता है: यह पुराना और प्रतीत होता है असमर्थित है। –

0

दुर्भाग्य से, यह .NET Framework में ही नहीं है। मेरी इच्छा यह है कि आप FileZilla के साथ एकीकृत कर सकते हैं, लेकिन मुझे नहीं लगता कि यह एक इंटरफेस का खुलासा करता है। उनके पास स्क्रिप्टिंग है जो मुझे लगता है, लेकिन यह स्पष्ट रूप से साफ नहीं होगा।

मैंने एक परियोजना में CuteFTP का उपयोग किया है जो एसएफटीपी करता है। यह एक COM घटक का खुलासा करता है जिसे मैंने एक .NET wrapper बनाया है। पकड़, आप पाएंगे, अनुमति है। यह विंडोज क्रेडेंशियल्स के तहत खूबसूरती से चलता है जो कि क्यूटएफटीपी स्थापित करता है, लेकिन अन्य क्रेडेंशियल्स के तहत चलने के लिए डीसीओएम में अनुमतियां सेट की आवश्यकता होती है।

30

शायद आप winscp पर स्क्रिप्ट/नियंत्रण कर सकते हैं?

अद्यतन: WinSCP अब एक nuget package SFTP, SCP, और FTPS का समर्थन करता है कि के रूप में a .NET library उपलब्ध है

+3

अच्छा बिंदु। मुझे यह करने के लिए एक गाइड मिला: http://winscp.net/eng/docs/guide_dotnet – Raithlin

+9

[नवीनतम संस्करण] (http://winscp.net/eng/docs/library) अब भी मूल .NET समर्थन है ! – fretje

+0

गैर-रूट दूरस्थ निर्देशिका पर अपलोड करने में समस्याएं। दस्तावेज़ीकरण का कहना है कि आपको सर्वर के पूर्ण पथ ("डी: \ ftproot \ etc") का उपयोग करना चाहिए जो मेरी राय में हास्यास्पद है। यहां तक ​​कि उस ज्ञान के साथ सशस्त्र भी मैं कभी भी फ़ाइल नहीं ले सकता जहां मैं इसे जाना चाहता था। –

0

एक और गैर-मुक्त विकल्प के लिए edtFTPnet/PRO आज़माएं। इसके पास एसएफटीपी के लिए व्यापक समर्थन है, और यदि आवश्यक हो तो एफटीपीएस (और निश्चित रूप से एफ़टीपी) का भी समर्थन करता है।

6

निम्नलिखित कोड दिखाता है कि हमारे Rebex SFTP घटक का उपयोग कर किसी फ़ाइल को SFTP सर्वर पर अपलोड करने का तरीका दिखाता है।

// create client, connect and log in 
Sftp client = new Sftp(); 
client.Connect(hostname); 
client.Login(username, password); 

// upload the 'test.zip' file to the current directory at the server 
client.PutFile(@"c:\data\test.zip", "test.zip"); 

client.Disconnect(); 

आप निम्नानुसार लॉगवाइटर संपत्ति का उपयोग कर फ़ाइल में एक पूर्ण संचार लॉग लिख सकते हैं। उदाहरण आउटपुट (एफ़टीपी घटक से लेकिन एसएफटीपी आउटपुट समान है) here पाया जा सकता है।

client.LogWriter = new Rebex.FileLogWriter(
    @"c:\temp\log.txt", Rebex.LogLevel.Debug); 

या संचार की घटनाओं का उपयोग कर के रूप में इस अवरोधन:

Sftp client = new Sftp(); 
client.CommandSent += new SftpCommandSentEventHandler(client_CommandSent); 
client.ResponseRead += new SftpResponseReadEventHandler(client_ResponseRead); 
client.Connect("sftp.example.org"); 

//... 
private void client_CommandSent(object sender, SftpCommandSentEventArgs e) 
{ 
    Console.WriteLine("Command: {0}", e.Command); 
} 

private void client_ResponseRead(object sender, SftpResponseReadEventArgs e) 
{ 
    Console.WriteLine("Response: {0}", e.Response); 
} 

अधिक जानकारी के लिए tutorial या download एक परीक्षण देख सकते हैं और samples की जाँच करें।

+1

विभिन्न .NET SFTP क्लाइंट्स का मेरा सीमित परीक्षण इंगित करता है कि यह वाणिज्यिक उत्पाद अच्छी पसंद है। –

+2

मैंने एसएसआईएस पैकेज के लिए इसका उपयोग करने की आवश्यकता होने पर भी पहले RebEx सामान का उपयोग किया है। यदि आप एक वाणिज्यिक तृतीय पक्ष मार्ग के माध्यम से जाना चाहते हैं तो उनके पास अच्छा समर्थन और दस्तावेज़ीकरण है। –

संबंधित मुद्दे