2012-12-17 14 views
7

मैं और अन्य सभी लोग इस सूची को कैसे पढ़ सकते हैं, ऑनलाइन निर्देशिका से सभी फ़ाइलों को एक सूचीदृश्य में कैसे पढ़ सकता है?ऑनलाइन एफ़टीपी निर्देशिका से सभी फाइलों को एक सूचीदृश्य में सूचीबद्ध करें सी #

यह स्थानीय निर्देशिका सूचीबद्ध करने के लिए कोड है, मैं यह जानना चाहता हूं कि इसे बनाने का कोई तरीका है या नहीं, जो कि एफ़टीपी वेबसाइट से जुड़ता है और फाइलों को सूचीबद्ध करता है?

FolderBrowserDialog folderPicker = new FolderBrowserDialog(); 
if (folderPicker.ShowDialog() == DialogResult.OK) 
{ 

    ListView1.Items.Clear(); 

    string[] files = Directory.GetFiles(folderPicker.SelectedPath); 
    foreach (string file in files) 
    { 

     string fileName = Path.GetFileNameWithoutExtension(file); 
     ListViewItem item = new ListViewItem(fileName); 
     item.Tag = file; 

     ListView1.Items.Add(item); 

    } 

} 

मैं इस कोड का इस्तेमाल किया है, लेकिन मैं इसे अपनी एक त्रुटि के साथ आ नहीं है, लेकिन इसके लिए या तो वेब सर्वर पर फ़ाइलों लिस्टिंग नहीं काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं?

private void ConnectBtn_Click(object sender, EventArgs e) 
    { 
     ListDirectory(); 
    } 

    public string[] ListDirectory() 
    { 
     var list = new List<string>(); 

     var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var stream = response.GetResponseStream()) 
      { 
       using (var reader = new StreamReader(stream, true)) 
       { 
        while (!reader.EndOfStream) 
        { 
         list.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } 

     return list.ToArray(); 
    } 

    private FtpWebRequest createRequest(string uri, string method) 
    { 
     var r = (FtpWebRequest)WebRequest.Create(uri); 

     r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); 
     r.Method = method; 

     return r; 
    } 

उत्तर

9

आप this wrapper library का उपयोग कर सकते हैं।

प्रासंगिक कोड है:

public string[] ListDirectory() { 
     var list = new List<string>(); 

     var request = createRequest(WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) { 
      using (var stream = response.GetResponseStream()) { 
       using (var reader = new StreamReader(stream, true)) { 
        while (!reader.EndOfStream) { 
         list.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } 

     return list.ToArray(); 
    } 
+0

createRequest – Terrii

+0

मैं इसे WebRequest.Create(), लेकिन मैं कहाँ क्या सर्वर इसे और यूज़रनेम और पासवर्ड एफ़टीपी के लिए से कनेक्ट करना चाहता बारे में जानकारी रख सकता हूं करने के लिए बदल नहीं मिल रहा? – Terrii

+0

'createRequest' कक्षा के नीचे है। यह निजी तरीकों में से एक है, तीसरा एक नीचे से ऊपर है। –

1

मैं इस सवाल का जवाब मैं प्रयोग और अब के लिए कुछ नहीं किया पाया अपने सूचीदृश्य में फ़ाइलों को प्रदर्शित करने, धन्यवाद रॉबर्ट हार्वे ♦

private void ConnectBtn_Click(object sender, EventArgs e) 
    { 
     ListDirectory(); 
    } 

    public string[] ListDirectory() 
    { 
     var list = listView1; 

     var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); 

     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var stream = response.GetResponseStream()) 
      { 
       using (var reader = new StreamReader(stream, true)) 
       { 
        while (!reader.EndOfStream) 
        { 
         list.Items.Add(reader.ReadLine()); 
        } 
       } 
      } 
     } List<string> l = new List<string>(); 
     return l.ToArray(); 
    } 

    private FtpWebRequest createRequest(string uri, string method) 
    { 
     var r = (FtpWebRequest)WebRequest.Create(uri); 

     r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); 
     r.Method = method; 

     return r; 
    } 
1

इस कोड ftp

private void ftpFileRead() 
{ 
    FtpWebRequest Request = (FtpWebRequest)WebRequest.Create("your ftpAddress"); 
    Request.Method = WebRequestMethods.Ftp.ListDirectory;  
    Request.Credentials = new NetworkCredential(your ftp username,your ftp password); 
    FtpWebResponse Response = (FtpWebResponse)Request.GetResponse(); 
    Stream ResponseStream = Response.GetResponseStream(); 
    StreamReader Reader = new StreamReader(ResponseStream); 

    ListBox1.Items.Add(Response.WelcomeMessage); 
    while (!Reader.EndOfStream)//Read file name 
    { 
    ListBox1.Items.Add(Reader.ReadLine().ToString()); 
    } 
    Response.Close(); 
    ResponseStream.Close(); 
    Reader.Close(); 
} 
7

से फ़ाइलों की सूची प्राप्त करने के लिए उपयोग किया जा सकता है यहां सभी फ़ाइलों को प्राप्त करने के लिए एक अच्छा सहायक है और एक FTP निर्देशिका के फ़ोल्डरों:

public static IEnumerable<string> GetFilesInFtpDirectory(string url, string username, string password) 
{ 
    // Get the object used to communicate with the server. 
    var request = (FtpWebRequest)WebRequest.Create(url); 
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
    request.Credentials = new NetworkCredential(username,password); 

    using (var response = (FtpWebResponse) request.GetResponse()) 
    { 
     using (var responseStream = response.GetResponseStream()) 
     { 
      var reader = new StreamReader(responseStream); 
      while (!reader.EndOfStream) 
      { 
       var line = reader.ReadLine(); 
       if (string.IsNullOrWhiteSpace(line) == false) 
       { 
        yield return line.Split(new[] { ' ', '\t' }).Last();  
       } 
      } 
     } 
    } 
} 

यहाँ मिला: http://www.snippetsource.net/Snippet/128/get-all-files-of-an-ftp-directory-in-c

+0

ईसाई धन्यवाद :) – Terrii

0

आप इस विधि का उपयोग कर सकते हैं।

public static string[] GetFiles(string path, NetworkCredential Credentials, SearchOption searchOption) 
    { 
     var request = (FtpWebRequest)WebRequest.Create(path); 
     request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
     request.Credentials = Credentials; 
     List<string> files = new List<string>(); 
     using (var response = (FtpWebResponse)request.GetResponse()) 
     { 
      using (var responseStream = response.GetResponseStream()) 
      { 
       var reader = new System.IO.StreamReader(responseStream); 
       while (!reader.EndOfStream) 
       { 
        var line = reader.ReadLine(); 
        if (string.IsNullOrWhiteSpace(line) == false) 
        { 
         if (!line.Contains("<DIR>")) 
         { 
          string[] details = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); 
          string file = line.Replace(details[0], "") 
           .Replace(details[1], "") 
           .Replace(details[2], "") 
           .Trim(); 
          files.Add(file); 
         } 
         else 
         { 
          if (searchOption == SearchOption.AllDirectories) 
          { 
           string dirName = line.Split(
             new string[] { "<DIR>" }, 
             StringSplitOptions.RemoveEmptyEntries 
             ).Last().Trim(); 
           string dirFullName = String.Format("{0}/{1}", path.Trim('/'), dirName); 
           files.AddRange(GetFiles(dirFullName, Credentials, searchOption)); 
          } 
         } 
        } 
       } 
      } 
     } 
     return files.ToArray(); 
    } 
संबंधित मुद्दे

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