[C++] FTP 구현 예제 업로드 다운로드(SImple Ftp Class)
Ftp 구현 하라고 하면 사용하면 되는 Class다.
출처 : 원본
Ftp 에서 할 수있는 기능이 거의 대부분 구현되어 있다.(Ftp Upload & Download)
다운로드 : Simple ftp 다운(클릭)
아래는 헤더 파일 함수.
//로그인
BOOL Login(CString strIP, CString strID=_T("anonymous"), CString strPasswd=_T(""),
UINT nPort = INTERNET_DEFAULT_FTP_PORT, HWND hCallWnd = NULL, BOOL bUtf8 = TRUE, BOOL bPassive = FALSE);
//로그아웃
void LogOut();
//FTP서버에 연결되어있으면 TRUE, 아니면 FALSE
BOOL IsConnected();
//파일만 다운로드
BOOL DownloadFile(CString strRemoteFilePath, CString strLocalFilePath, BOOL bResume = FALSE);
//하위 디렉토리까지 포함하여 다운로드
BOOL DownloadWithSubDir(CString strRemoteDir, CString strLocalDir, BOOL bResume = FALSE);
//파일만 업로드
BOOL UploadFile(CString strLocalFilePath, CString strRemoteFilePath, BOOL bResume = FALSE);
//하위 디렉토리 포함 업로드
BOOL UploadWithSubDir(CString strLocalDir, CString strRemoteDir, BOOL bResume = FALSE);
//FTP서버에 디렉토리를 생성(이때 서버에 없는 하위 디렉토리는 자동 생성한다)
int CreateRemoteDir(CString strRemoteDir);
//FTP서버 파일 또는 디렉토리 이름변경
BOOL RenameRemoteFile(CString strRemoteOldPath, CString strRemoteNewPath);
//FTP서버의 하위디렉토리 포함 삭제
BOOL DeleteRemoteDir(CString strRemoteDir);
//FTP서버의 파일 삭제
BOOL DeleteRemoteFile(CString strRemoteFilePath);
//FTP서버 현재 디렉토리 변경
BOOL SetRemoteDirectory(CString strRemoteDir);
//FTP서버의 현재 디렉토리 경로를 구함
BOOL GetRemoteDirectory(__out CString& strRemoteDir);
//FTP서버의 파일 크기를 구함(성공 TRUE, 실패 FALSE)
BOOL GetRemoteFileSize(__in CString strRemoteFilePath, __out UINT64& nRemoteFileSize);
//FTP서버에 특정 디렉토리가 있는지 확인. FTP서버에 디렉토리가 존재하면 1, 오류인경우 -1, 없으면 0
int FindRemoteDir(CString strRemoteDir);
//FTP서버에 특정 파일이 있는지 확인. FTP서버에 파일이 존재하면 존재하면 1, 오류인경우 -1, 없으면 0
int FindRemoteFile(CString strRemoteFilePath);
//하위 디렉토리 포함한 파일목록(디렉토리+파일)을 구함
BOOL GetRemoteFileListWithSubDir(__in CString strRemoteDir, __out FILE_LIST& file_list);
//FTP의 디렉토리 파일목록(디렉토리+파일)을 구함. 하위디렉토리 미포함
BOOL GetRemoteFileList(__in CString strRemoteDir, __out FILE_LIST& file_list);
BOOL Login(CString strIP, CString strID=_T("anonymous"), CString strPasswd=_T(""),
UINT nPort = INTERNET_DEFAULT_FTP_PORT, HWND hCallWnd = NULL, BOOL bUtf8 = TRUE, BOOL bPassive = FALSE);
//로그아웃
void LogOut();
//FTP서버에 연결되어있으면 TRUE, 아니면 FALSE
BOOL IsConnected();
//파일만 다운로드
BOOL DownloadFile(CString strRemoteFilePath, CString strLocalFilePath, BOOL bResume = FALSE);
//하위 디렉토리까지 포함하여 다운로드
BOOL DownloadWithSubDir(CString strRemoteDir, CString strLocalDir, BOOL bResume = FALSE);
//파일만 업로드
BOOL UploadFile(CString strLocalFilePath, CString strRemoteFilePath, BOOL bResume = FALSE);
//하위 디렉토리 포함 업로드
BOOL UploadWithSubDir(CString strLocalDir, CString strRemoteDir, BOOL bResume = FALSE);
//FTP서버에 디렉토리를 생성(이때 서버에 없는 하위 디렉토리는 자동 생성한다)
int CreateRemoteDir(CString strRemoteDir);
//FTP서버 파일 또는 디렉토리 이름변경
BOOL RenameRemoteFile(CString strRemoteOldPath, CString strRemoteNewPath);
//FTP서버의 하위디렉토리 포함 삭제
BOOL DeleteRemoteDir(CString strRemoteDir);
//FTP서버의 파일 삭제
BOOL DeleteRemoteFile(CString strRemoteFilePath);
//FTP서버 현재 디렉토리 변경
BOOL SetRemoteDirectory(CString strRemoteDir);
//FTP서버의 현재 디렉토리 경로를 구함
BOOL GetRemoteDirectory(__out CString& strRemoteDir);
//FTP서버의 파일 크기를 구함(성공 TRUE, 실패 FALSE)
BOOL GetRemoteFileSize(__in CString strRemoteFilePath, __out UINT64& nRemoteFileSize);
//FTP서버에 특정 디렉토리가 있는지 확인. FTP서버에 디렉토리가 존재하면 1, 오류인경우 -1, 없으면 0
int FindRemoteDir(CString strRemoteDir);
//FTP서버에 특정 파일이 있는지 확인. FTP서버에 파일이 존재하면 존재하면 1, 오류인경우 -1, 없으면 0
int FindRemoteFile(CString strRemoteFilePath);
//하위 디렉토리 포함한 파일목록(디렉토리+파일)을 구함
BOOL GetRemoteFileListWithSubDir(__in CString strRemoteDir, __out FILE_LIST& file_list);
//FTP의 디렉토리 파일목록(디렉토리+파일)을 구함. 하위디렉토리 미포함
BOOL GetRemoteFileList(__in CString strRemoteDir, __out FILE_LIST& file_list);
댓글
댓글 쓰기