'C# FTP'에 해당되는 글 2건

  1. 2013.02.26 [ C# ] FTP 4
  2. 2010.07.21 [ C# ] C# FTP Download 3
Languages/C#2013. 2. 26. 18:49

프로젝트마다 FTP 관련 기능들을 사용할 때가 있는데요.

기본 메소드 기능들과 이 기능들을 활용하여 좀 더 다양한 기능들 구현할 때가 많았습니다.

( 디렉토리 존재여부, 경로대로 디렉토리 생성, 디렉토리 모두 삭제, 디렉토리 다운로드, 여러 파일 업로드 등.. )

 

그래서 이러한 기능들을 쉽게 사용할 수 있도록 클래스를 만들어 보았습니다.

 

 

중요 클래스는 Ftp 클래스입니다.

그 외에 관련된 필요 클래스들도 위에 보이는 것처럼 여러 개가 있습니다.

 

아래 그림은 Ftp 클래스의 메소드와 프로퍼티 이벤트입니다.

 

메소드는 WebRequestMethods.Ftp 의 기본 메소드들과 이를 응용한 확장 메소드들이 있습니다.

메소드명을 보시면 어떤 역활을 하는지 알 수 있고, summary 를 달아놔서 사용 시 어렵지는 않으실 겁니다.

 

메소드들 중 업로드와 다운로드 메소드명 뒤에 WC 라고 붙는 메소들이 있는데요.

WebClient 를 이용해서 파일 업로드, 다운로드를 진행하는 메소드이고,

일반적인 메소드는 FtpWebRequest 를 사용하여 진행합니다.

 

프로젝트시 마다 항상 필요성을 느껴서 만들게 된 메소드가 두 가지 있습니다.

DownloadDirectoryAsync( WC ) 메소드는 FTP 에 있는 폴더를 통째로 다운로드 받고,

UploadFileListAsync( WC ) 메소드는 FtpUploadDirectory 리스트를 매개변수로 받아

파일들을 모두 업로드 합니다.

 

업로드 다운로드시 필요 이벤트들을 만들어 놓았습니다.

DownloadDirectoryChanged 는 다운로드는 되는 파일 변경시 발생하고,

UploadFileListChanged 는 업로드 되는 파일 변경시 발생합니다. 

 

소스를 첨부하니 디버깅에 사용하시고, 출처는 밝혀주시면 감사하겠습니다.

사용하시면서 발생하는 문제점들에 대해서 의견 주시면 반영하도록 하겠습니다. 

 

 


 

 

FTP.zip

 

 


'Languages > C#' 카테고리의 다른 글

ClickOnce Custom BootStrapper  (0) 2015.12.01
[ C# ] Change Audio Device  (0) 2013.08.06
[ C# ] Object To Byte, Byte To Byte  (0) 2013.02.26
[ C# ] Struct To Byte, Byte To Struct  (0) 2012.08.17
[ C# ] Win32 API MouseEvent  (8) 2010.12.07
Posted by 열ㅇl
Languages/C#2010. 7. 21. 12:16

C# 에서는 FTP 에 관련된 기능들을 손쉽게 구현할 수 있도록 클래스들을 제공하고 있습니다.

그 중에서 FtpWebRequest가 많이 사용되어지고 있는데요.

FtpWebRequest Method 멤버 값 속성인 WebRequestMethods.Ftp 의 멤버 변수들을 보시면 각 기능들에 대해

알 수가 있습니다.

 

MSDN : http://msdn.microsoft.com/en-us/library/system.net.webrequestmethods.ftp_members.aspx

 

기본적인 사용 방법은 다음과 같습니다.

  FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create("ftp 서버 주소");

 

  // 사용할 기능 설정

  reqFtp.Method = WebRequestMethods.Ftp.GetFileSize;

  reqFtp.Credentials = new NetworkCredential("UserName", "Password");

 

  // 요청에 대한 응답을 받습니다.

  FtpWebResponse resFtp = (FtpWebResponse)reqFtp.GetResponse();

  long fileSize = resFtp.ContentLength;

  resFtp.Close();

 

FtpWebResponse 에 대한 자세한 내용은 다음 주소를 참고하세요.

MSDN : http://msdn.microsoft.com/ko-kr/library/system.net.ftpwebresponse_members(VS.90).aspx

 

WebRequestMethods.Ftp 의 멤버 변수인 DownloadFile 을 사용하여 파일을 다운로드 할 수 있지만

현재 진행률을 보여주고 싶을 때 간단하게 이벤트 핸들러를 통해 그 값을 확인할 수가 있는데요.

 

WebClient 클래스를 사용하면 됩니다.

MSDN : http://msdn.microsoft.com/ko-kr/library/system.net.webclient_members(VS.90).aspx

 

간단한 사용법은 다음과 같습니다.

 using (WebClient request = new WebClient())

{

    request.Credentials = new NetworkCredential("UserName", "Password");

 

    // 파일 다운로드 진행률 변경 이벤트

    request.DownloadProgressChanged += request_DownloadProgressChanged;

 

    // 파일 다운로드 완료 이벤트

    request.DownloadFileCompleted += request_DownloadFileCompleted;

   

    // 다운로드 시작

    request.DownloadFileAsync("다운 받을 파일의 전체 경로");

}

 

간단하게 FTP 서버에서 파일을 다운 받는 예제를 만들어 보았습니다.

 

윈도우 7에서는 보안상의 문제로 C 드라이브에 엑세스 할 수 없어 저장이 안됩니다.

FTP_Download.zip

'Languages > C#' 카테고리의 다른 글

[ C# ] Struct To Byte, Byte To Struct  (0) 2012.08.17
[ C# ] Win32 API MouseEvent  (8) 2010.12.07
[ C# ] Default Sound Device 변경하기  (0) 2010.07.19
[ C# ] XML 쓰고 읽기  (0) 2010.05.21
[ C# ] Network 연결 확인  (0) 2010.05.21
Posted by 열ㅇl