2012-11-09 16 views
8

का उपयोग कर पूरी निर्देशिका अपलोड करें जो मैं करने की कोशिश कर रहा हूं वह सी # (सी शार्प) में एफ़टीपी का उपयोग कर वेबसाइट अपलोड करना है। इसलिए मुझे अपनी संरचना को बनाए रखने, फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डरों को अपलोड करने की आवश्यकता है। मैं वास्तविक अपलोडिंग के लिए इस एफ़टीपी कक्षा का उपयोग कर रहा हूं: http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Classसी # एफ़टीपी

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

यह वही है मैं अब तक है:

private void recursiveDirectory(string directoryPath) 
    { 
     string[] filePaths = null; 
     string[] subDirectories = null; 

     filePaths = Directory.GetFiles(directoryPath, "*.*"); 
     subDirectories = Directory.GetDirectories(directoryPath); 

     if (filePaths != null && subDirectories != null) 
     { 
      foreach (string directory in subDirectories) 
      { 
       ftpClient.createDirectory(directory); 
      } 
      foreach (string file in filePaths) 
      { 
       ftpClient.upload(Path.GetDirectoryName(directoryPath), file); 
      } 
     } 
    } 

लेकिन इसकी किया है और मैं जारी रखने के लिए पता नहीं कैसे दूर से। मुझे यकीन है कि मुझे इससे ज्यादा जानने की ज़रूरत है! अग्रिम धन्यवाद :)

ओह और ... में यह अच्छा होगा अगर वह अपनी प्रगति भी सूचना दी :) (मैं एक प्रगति बार उपयोग कर रहा हूँ) होगा

संपादित करें: यह स्पष्ट नहीं हो सकता है ... मैं एफ़टीपी के साथ सभी उप-निर्देशिकाओं और फ़ाइलों सहित निर्देशिका कैसे अपलोड करूं?

+0

और सवाल है? – J0HN

+0

पहले एक साधारण समस्या को हल करने दें। एक विधि लिखें जो प्रत्येक फ़ोल्डर के माध्यम से पैरेंट फ़ोल्डर में लूप करेगी और इसे वेबसाइट पर प्रश्न में बनायेगी। एक बार ऐसा करने के बाद, उन प्रत्येक फ़ोल्डर में प्रत्येक फ़ाइल को अपलोड करने के लिए पर्याप्त आसान होना चाहिए। आपकी मदद करने के लिए हमारे पास पर्याप्त नहीं है। मुझे विश्वास नहीं है कि फीचर अनुरोध करने के लिए आपके पास तंत्रिका है ..... –

+1

प्रगति पट्टी बनाने के लिए आपको अपलोड की जाने वाली सभी फाइलें प्राप्त करने की आवश्यकता होगी। मैं एक सूची में फ़ाइल पथ स्टोर करेंगे। फिर फ़ाइल पथ के माध्यम से उन्हें FTP सर्वर पर अपलोड करने के लिए लूप करें। प्रत्येक अपलोड के बाद प्रगति को अद्यतन करें। फ़ाइल पथ के साथ फ़ाइल के आकार को संग्रहीत करके एक और सटीक बार प्राप्त किया जा सकता है। फिर प्रत्येक फ़ाइल अपलोड होने पर फ़ाइल के आकार से प्रगति में वृद्धि होती है। यदि आपको आवश्यकता है तो मैं बाद में एक उदाहरण जोड़ सकता हूं। – Trisped

उत्तर

11

समस्या हल हो गई! :)

ठीक है इसलिए मैं विधि myslef लिखने में कामयाब रहा। किसी को भी यह महसूस हो रहा है की जरूरत है कॉपी करने के लिए स्वतंत्र:

private void recursiveDirectory(string dirPath, string uploadPath) 
    { 
     string[] files = Directory.GetFiles(dirPath, "*.*"); 
     string[] subDirs = Directory.GetDirectories(dirPath); 

     foreach (string file in files) 
     { 
      ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file); 
     } 

     foreach (string subDir in subDirs) 
     { 
      ftpClient.createDirectory(uploadPath + "/" + Path.GetFileName(subDir)); 
      recursiveDirectory(subDir, uploadPath + "/" + Path.GetFileName(subDir)); 
     } 
    } 

यह बहुत अच्छी तरह से काम करता है :)

+0

यह काम करेगा यदि आपने उल्लेख किया होगा कि आपने उस कोड को करने के लिए उपयोग और बाहरी लाइब्रेरी का उपयोग किया है, जिसमें आपके द्वारा किए गए बहुत से अन्य कोड शामिल नहीं हैं। –

+0

उन्होंने सवाल में किया। लेकिन हाँ, मैं लिंक की तलाश करने के बजाय भी अनावश्यकता चाहता हूं। – CyberFox

+0

यह सभी फ़ाइलों और निर्देशिकाओं को दूरस्थ रूप से बना देता है, लेकिन सभी फ़ाइलों के पास 0 बी का फ़ाइल आकार होता है। ??? – im1dermike

0

जब तक आप इसे मजेदार या आत्म-सुधार के लिए नहीं कर रहे हैं, तो वाणिज्यिक मॉड्यूल का उपयोग करें। मैं Chilkat से एक की सिफारिश कर सकता हूं, लेकिन मुझे यकीन है कि कुछ भी हैं।

नोट: मैं बहुत यकीन है कि यह कहा गया है समस्या का जवाब है हूँ, मुझे क्या करना कोशिश कर रहा हूँ सी # (सी तीव्र) में FTP का उपयोग करके एक वेबसाइट अपलोड करने के लिए है।

4

मैंने एक एफ़टीपी क्लैसी लिखा और इसे WinForms उपयोगकर्ता नियंत्रण में भी लपेट लिया। आप लेख An FtpClient Class and WinForm Control पर अपना कोड देख सकते हैं।