2012-11-09 8 views
8

내가하려는 것은 C#으로 FTP를 사용하여 웹 사이트를 업로드하는 것입니다 (C 샤프). 그래서 폴더 안에 모든 파일과 폴더를 업로드하고 구조를 유지해야합니다. 저는이 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

진행률 표시 줄을 만들려면 업로드해야하는 모든 파일을 가져와야합니다. 목록에 파일 경로를 저장합니다. 그런 다음 파일 경로를 반복하여 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 Sharp)에서 FTP를 사용하여 웹 사이트를 업로드하는 것입니다.

관련 문제