SFtpClient クラス

FTP サーバーに接続し、ファイルの情報取得、アップロード、ダウンロード、削除、名前変更ができます。ネストの深いディレクトリも一度で 作成できます。
更新日 2014-07-29

仕様

FTP クライアントになるクラスです。ログイン、ファイル情報の取得、アップロード、ダウンロード、削除、リネームが可能です。また アップロード時に必要であればディレクトリも作成してくれます。属性変更だけ出来ないのが欠点です(-_-;

ソースコード

SFtpClient.h 右クリックで「対象をファイルに保存」でダウンロードしてください。サンプルソースコードもご参考ください。

依存関係

sjstring.hscritical.hsdata.hが必要です。それぞれダウンロードしてください。

メソッド

login()

FTP サーバーにログインします。引数に、FTPサーバーのホスト名、ログインID、ログインパスワードを渡します。 成功するとTRUE を返します。
SFtpClient ftp;
BOOL bLogin = ftp.login( __TEXT("ftp.???.com"), __TEXT("pinoko"), __TEXT("detarame"));

logout()

FTP サーバーからログアウトします。
ftp.logout();

upload()

ファイルをアップロードします。サーバー上のパス(ディレクトリ階層)が存在しないときは自動的に作成されます。事前にFTP サーバーに ログインしておきます。
// d:\test.html というローカル上のファイルを、FTP サーバーのweb という
// ディレクトリの下にindex.html というファイル名で転送します。
// アスキーモードでタイムスタンプをチェックします。

SJString strFile = __TEXT("d:\test.html");
SJString strPath = __TEXT("/web/index.html");
BOOL bSkip = FALSE;
BOOL bRet = ftp.upload(strFile, strPath, TRUE, TRUE, &bSkip);
if (bRet != FALSE)
{
	// アップロード成功
	if (bSkip != FALSE)
	{
		// タイムスタンプの比較の結果、上書き転送はしませんでした。
	}
}

remove()

FTP サーバー上の任意のファイルやディレクトリを削除します。特にディレクトリは中にファイルが存在しても 一括で削除できるのが特徴です。
ftp.remove( "/web/index.html" );

ls()

ディレクトリ内のファイル・サブディレクトリの一覧を取得します。取得したファイルはWIN32_FIND_DATA 構造体で、 STL::list であるSFtpClient::m_LIST_LPWIN32_FIND_DATA メンバに格納されます。
ftp.ls( "/");
for (LIST_LPWIN32_FIND_DATA::iterator i = ftp.m_LIST_LPWIN32_FIND_DATA.begin();
	 i != ftp.m_LIST_LPWIN32_FIND_DATA.end(); i++)
{
	LPWIN32_FIND_DATA lpWIN32_FIND_DATA = (LPWIN32_FIND_DATA)(*i);
	// ここでファイル毎のデータを知る
}

GetFileInfo()

サーバー上のファイルの情報(WIN32_FIND_DATA) を取得します。
WIN32_FIND_DATA fileInfo;
ftp.GetFileInfo( "/web/index.html", &fileInfo);

GetFileLastupdate()

ファイルの最終更新日時を取得します。日付文字列は "2005/08/01 19:53:02" といった形になります。
TCHAR Buf[512] = {0};
ftp.GetFileLastupdate( "/web/index.html", Buf, 512);
// Buf == 2005/08/01 19:53:02

rename()

サーバー上のファイル名を変更します。
ftp.rename( "/web/index.html", "/web/home.html");

IsFileExist()

サーバー上に指定のファイルが存在すればTRUE を返します。
BOOL bExist = ftp.IsFileExist("/web/index.html");
if (bExist != FALSE)
{
	// ファイルが存在する。
}

使用例