2012-11-09 47 views
8

我想要做的是在C#(C Sharp)中使用FTP上傳網站。所以我需要上傳文件夾中的所有文件和文件夾,並保持其結構。我正在使用此FTP類:http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class進行實際上傳。C#使用FTP上傳整個目錄

我來,我需要編寫,通過主目錄下的每個子目錄去遞歸方法和上傳的所有文件和文件夾在它的結論。這應該使我的文件夾到FTP的確切副本。問題是......我不知道如何編寫這樣的方法。我已經編寫了遞歸方法,但我是新來的FTP部分。

這是我到目前爲止有:

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); 
      } 
     } 
    } 

但它遠遠沒有完成,我不知道該怎麼繼續。我肯定比我更需要知道這一點!感謝提前:)

喔......和這將是很好,如果報得它的進展:)(我使用一個進度條)

編輯: 它可能是不清楚...如何使用FTP上傳包含所有子目錄和文件的目錄?

+0

而問題是什麼? – J0HN

+0

讓我們先解決一個簡單的問題。編寫一個方法,循環訪問父文件夾中的每個文件夾,並在相關網站上創建它。一旦你這樣做,應該很容易上傳每個文件夾中的每個文件。你沒有足夠的時間來幫助我們。我不敢相信你有膽量做出功能請求..... –

+1

要創建一個進度條,你需要獲得所有需要上傳的文件。我會將文件路徑存儲在List中。然後通過文件路徑循環將其上傳到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

這最終會遠程創建所有文件和目錄,但所有文件的文件大小均爲0B。 ??? – im1dermike

0

除非你這樣做是爲了好玩或自強不息,使用商業模塊。我可以推薦Chilkat,但我確定有其他人。

注:我敢肯定,這也回答了上述問題,我試圖做的是上傳在C#(C夏普),使用FTP網站。