[C#]WebClient클래스로 FTP기반 파일전송 방법

Written by Youngil Kim, C#.NET Developer


 


.NET Framework 2.0의 WebClient클래스는 FTP프로토콜도 대응하기에 GOM은 FTP를 기반으로 하는 파일 업/다운로드를 구현해보았습니다.


 


– FTP기반 다운로드 방법


일단 FTP의 파일 다운로드는 DownloadFile 메소드를 이용하여 첫번째 파라미터는 다운로드할 파일의 URL(형식: ftp://FTP서버명/파일경로)을 지정합니다.


에로 ftp://ftp.microsoft.com/developr/readme.txt를 직접 웹브라이저에서 입력해보세요 실제로 접속됩니다. 이는 ftp.microsoft.com이란 FTP서버에 developer란 폴더에 있는 readme.txt파일을 지정한다는 의미입니다.


참고로 FTP서버에 접근하려면 일반적으로 사용자ID와 비밀번호를 통해 인증을 받아야 하는 경우가 있습니다. 이런 경우 WebClient클래스의 Credentials속성을 선언해둘 필요가 있습니다.


 


[WCFtpDownload.cs]


using System;
using System.Collections.Generic;
using System.Net;


namespace WCFtpDownload
{
    class Program
    {
        static void Main(string[] args)
        {
           WebClient wc = new WebClient();
           wc.Credentials = new NetworkCredential(“admin”, “passwd”);
           wc.DownloadFile(“
ftp://server/temp/a.zip”,”temp.zip“);
        }
    }
}


위 예제는 사용자명 admin, 비밀번호 passwd라는 계정으로 FTP서버 server에 로그인하고 temp폴더에 있는 a.zip파일을 다운로드하여 temp.zip이란 파일명으로 변경하여 현대 폴더에 저장하는 형태입니다.


 


– FTP기반 업로드 방법


업로드방법도 다운로드 방법만큼 간단합니다. UploadFile 메소드를 사용하면 끝나기 때문이죠 =_=;


 


[WCFtpUpload.cs]


using System;
using System.Collections.Generic;
using System.Net;


namespace WCFtpUpload
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential(“admin”,”passwd”);
            wc.UploadFile(“
ftp://server/temp/xxx.zip“, “temp.zip”);


        }
    }
}


 


이 예제는 급조해서 만든거라서 연속 실행하면 두번째이후는 계속 예외가 발생합니다. 이미 파일이 있기 때문이죠 그렇기 때문에 실무에 적용시, 기존 파일이 있는 경우 파일명을 변경하여 업로드를 하는 로직이 필요하겠죠?


또한, Credentials 속성을 설정하지 않고 FTP서버에 접근하는 경우 기본값으로 사용자ID는 anonymous, 비밀번호는 anonymous@가 사용됩니다.


 


이상 끝!

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다