[C#] FTP 이용 C# 2011. 9. 1. 13:14

만들어 놓은걸 귀찮게 왔다 갔다 하기 싫어서..

포스팅을 하긴 하는데.. 흠.. 심플하다 역시. 모두들 다 아는 방법 일 것이고

1. Upload

            Uri ftpUri = new Uri("ftp경로 + 파일 이름");
            FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create(ftpUri);
            reqFtp.Credentials = new NetworkCredential("id", "password");
            reqFtp.UseBinary = true;
            reqFtp.UsePassive = true;
            reqFtp.KeepAlive = false;
            reqFtp.Timeout = 10000;
            reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
            FileInfo fileinfo = new FileInfo(@"C:\Result110830.txt");
            FileStream fstream = fileinfo.OpenRead();
            byte[] buffer = new byte[2048];
            int curroffset = 0;            try
            {
                Stream stream = reqFtp.GetRequestStream();
                curroffset = fstream.Read(buffer, 0, 2048);
                while (curroffset != 0)
                {
                    stream.Write(buffer, 0, curroffset);
                    curroffset = fstream.Read(buffer, 0, 2048);
                }
            }
            catch (Exception ex)
            {
            }

2. Download

            Uri ftpUri = new Uri("ftp경로 + 파일 이름");
            FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create(ftpUri);
            reqFtp.Credentials = new NetworkCredential("id", "password");
            reqFtp.Timeout = 10000;
            reqFtp.Method = WebRequestMethods.Ftp.ListDirectory;
            FtpWebResponse resFtp = (FtpWebResponse)reqFtp.GetResponse();
            StreamReader reader = new StreamReader(resFtp.GetResponseStream());
            string strData = reader.ReadToEnd();
            //ftp 경로 내의 파일 정보 읽어 오는 부분
            string[] filesInDirectory = strData.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            resFtp.Close();
            try
            {
                foreach (string _str in filesInDirectory)//파일명  
                {
                    //이미 윗 부분에서 권한을 가져 왔기 때문에 다시 권한을 지정 해 줄 필요가 없다.
                    WebClient wclient = new WebClient();
                    wclient.Credentials = new NetworkCredential();
                    wclient.DownloadFileAsync(ftpUri, @"C:\dsneat\" + _str);
                }
            }
            catch (Exception exx)
            {               
            }

두가지 방법으로 왔다 갔다 하면 그냥 왠만한건 다 되는거 같다.

기억상에 폴더 채로 해 봤던 적이 있었던거 같은데.. 기억이 잘 안난다 ㅠ_ㅠ

누가 알면.. 간단히 리뷰 해 주면 좋겠는데 ㅠ_ㅠ

그럼 오늘도 열심히 화이팅!!