2009/02/05 02:28 http://blog.naver.com/dawnpr/130042012019 |
■ FTP 서버 접속
// ftpCt: TIdFTP; 폼에서 선언
ftpCt.Host := edtHost.Text;
// 기본 FTP 포트를 사용하는 경우, 설정 안해도 됨
ftpCt.Port := StrToInt(edtPort.Text);
// Anonymous(익명)로 접속하는 경우 아래와 같이 설정
ftpCt.Username := 'anonymous';//edtId.Text;
// 익명 접속일 경우 패스워드 설정할 필요 없음
//ftpCt.Password := edtPass.Text;
// FTP 서버에 접속
ftpCt.Connect;
■ FTP 서버에서 파일 리스트 가져오기
파일 리스트를 가져오는 방법은 두가지가 있다.
파일명이나 폴더명을 가져오는 방법과
파일명의 속성같은 정보를 한번에 가져오는 방법이 있다.
물론 파일 리스트를 가져오기전에 FTP를 접속해야된다.
* 파일명만 가져오는 방법
slFile := TStringList.Create;
try
// FTP 폴더를 바꾸는 방법
ftpCt.ChangeDir('/');
// 파일명만 가져오기
// 선택된 폴더의 파일 리스트를 TStringList파일에 저장한다.
ftpCt.List(slFile, '', false);
// 저장된 리스트를 리스트 박스에 추가
for i := 0 to slFile.Count - 1 do
lstFolder.Items.Add(slFile.Strings[i]);
finally
slFile.Free;
ftpCt.Quit;
end;
ftpCt.Disconnect;
* 파일속성까지 가져오는 방법
try
ftpCt.ChangeDir('/');
// 선택된 폴더의 파일 리스트(속성 포함)를
// DirectoryListing에 자료를 저장
ftpCt.List(nil);
// 리스트에 저장한 값 리스트박스에 추가
for i := 0 to ftpCt.DirectoryListing.Count -1 do
begin
// 디렉토리(ditDirectory )인지 파일(ditFile)인지 구분
if ftpCt.DirectoryListing.Items[i].ItemType = ditDirectory then
sFile := ftpCt.DirectoryListing.Items[i].FileName ; // 파일이름
// 리스트박스에 추가
lstAtt.Items.Add(sFile);
end;
finally
ftpCt.Quit;
end;
ftpCt.Disconnect;
★여기서 중요한 것이 있다.
FTP서버가 윈도우즈 계열인 경우, 파일 속성까지 가져오려해도(ftpCt.List(nil))
리스트를 제대로 가져오지 못한다.
FTP서버가 윈도우즈 계열인 경우에는 uses에서 IdFTPListParseWindowsNT를
추가해주어야지만 제대로 리스트를 가져올 수 있다.
이것을 몰라서 하루종일 해맸다.
■ FTP 서버에서 지정한 파일 가져오기
FTP에서 파일을 클라이언트로 카피하기
// FTP가 연결되어있는가
if ftpCt.Connected then
begin
try
// 파일이 있는 폴더 설정
sFolder := '/'+ lstFolder.Items.Strings[lstFolder.ItemIndex];
// FTP 서버에 있는 파일명
sSrcFile := lstFile.Items.Strings[lstFile.ItemIndex];
// 클라이언트 컴퓨터에 카피할 파일명
sTrgFile := 'c:\' + lstFile.Items.Strings[lstFile.ItemIndex];
ftpCt.TransferType := ftASCII;
// 폴더 바꾸기
ftpCt.ChangeDir(sFolder);
// FTP 서버에서 파일 가져오기
ftpCt.Get(sSrcFile, sTrgFile, true);
finally
ftpCt.Quit;
end;
■ 참고사항
위 소스를 돌리기 위해서는 밑의 클래스들을
uses에 추가해야된다.
uses
IdFTP, IdFTPCommon, IdFTPListParseWindowsNT, IdFTPList;
---------- ---------- ---------- ---------- ----------
파일을 업로드할 때는 Put 함수를 사용함
Put(컴퓨터 안의 파일 풀패스, FTP 서버의 풀 패스)
[출처] [델파이] TIdFTP로 FTP 클라이언트 만들기|작성자 복덩이
'델파이 > 델파이관련' 카테고리의 다른 글
델파이 HotKey (0) | 2012.02.10 |
---|---|
델파이로 Shortcut 만들기 (0) | 2012.02.09 |
델파이 ZLIB 사용하기 (0) | 2012.02.08 |
RichEdit Message Interface (0) | 2011.09.28 |
Delphi Memo 에서 현재 Line 과 Column 알아내기 (0) | 2011.09.28 |