2013-12-11 2 views
0

ftp의 모든 파일을 로컬 폴더로 다운로드하려고합니다. 모든 파일은 로컬 드라이브에 다운로드 한 후 ftp에서 삭제해야합니다. 내가 FTP에서 불과 파일을 다운로드 할 수 있습니다C#을 사용하여 ftp에서 로컬 폴더로 파일 목록을 다운로드 하시겠습니까?

  1. 아래의 코드에서

    내가 기대하고 있지 않다

    내가 폴더에 있지만 지역의 이름으로 모든 파일을 배치해야
  2. 파일 이름.

내 코드 :

위의 코드에서
using (WebClient ftpClient = new WebClient()) 
{ 
    ftpClient.Credentials = new System.Net.NetworkCredential("ftpusername", "ftp pass"); 
    ftpClient.DownloadFile("ftp://ftpdetails.com/dec.docx",@"D:\\Mainfolder\test.docx"); 
} 

, 내가 파일을 다운로드 내가 FTP 및 장소에서 다운로드 너무 많은 파일이 only..Where 파일의 이름에 배치 할 수 있습니다 그것은 로컬 폴더에 .. 모든 제안은 대단히 감사합니다.

+0

[C#에서 FTP가있는 디렉토리 내용을 나열하는 방법] (http://stackoverflow.com/questions/3298922/how-to-list-directory-contents-with-ftp-in-c)을 참조하십시오. – CodeCaster

+0

질문이 너무 광범위하고 문제가있는 특정 부분을 설명하지 않았습니다. 1) FTP 디렉토리 내용과 목록의 각 파일에 대해 2) 다운로드, 3) 로컬 쓰기, 4) FTP에서 삭제를 원합니다. 1 단계에서 복제본으로 링크 된 질문을 참조하십시오. 나머지 부분을 파악할 수 있어야합니다. – CodeCaster

답변

4

는 다음 디렉토리에서 파일 이름의 목록을 얻을 수있는 FTPWebResponse를 사용하는 예입니다. 다운로드 할 파일이 많은 경우 asyncronous downloading을 조사하여 속도를 높이는 것이 좋습니다. 그러나 비동기 작업을 구현하기 전에 먼저이 작업을 수행하십시오.

+1

"WebRequestMethods.Ftp.ListDirectoryDetails"또한 파일의 날짜와 크기를 반환합니다. "WebRequestMethods.Ftp.ListDirectory"를 사용하면 파일 이름 만 수신하므로 구문 분석 할 필요가 없습니다. –

+0

Paul,이 목록을 사용하여 파일을 다운로드하는 방법에 대한 예제를 제공해 주시겠습니까? – dragy

1

WebClient가 유효한 FTP 클라이언트라고 생각하지 않습니다. 표준 클래스 FtpWebRequestFtpWebResponse을 대신 사용하십시오.

그렇지 않으면 작업을 수행 할 몇 가지 무료 C# ftp 클라이언트가 있습니다. 그런 다음 각 파일을 다운로드하려면이 목록을 사용할 수 있습니다

using System; 
using System.IO; 
using System.Net; 
using System.Text; 

namespace Examples.System.Net 
{ 
    public class WebRequestGetExample 
    { 
     public static void Main() 
     { 
      // Get the object used to communicate with the server. 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.funet.fi/pub/standards/RFC/"); 
      request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 

      // This example assumes the FTP site uses anonymous logon. 
      request.Credentials = new NetworkCredential("anonymous", "[email protected]"); 

      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

      Stream responseStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(responseStream); 

      while (!reader.EndOfStream) 
      { 
       String filename = reader.ReadLine(); 
       Console.WriteLine(filename); 
       //you now have the file name, you can use it to download this specific file 


      } 

      Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription); 

      reader.Close(); 
      response.Close(); 
     } 
    } 
} 

:

관련 문제