ディレクトリ内のファイル一覧を取得
FTPサーバー内にあるファイルの一覧を取得し、アップロードされた日付に応じて処理を実行したい場合もあります(たとえば、1日以内にアップロードされた画像ファイルだけをダウンロードするなど)。
FTPサーバー内のファイル一覧を取得するにはls()メソッドを使います。ls()によって取得したファイル情報は以下の3つのプロパティに配列として格納されます。
- files
- ファイル名
- dates
- 日付
- sizes
- ファイルサイズ
これらの配列を参照することでファイルの情報を得られます。datesはDateオブジェクトで扱える日付形式になっているのでnew Date(dates[0])のようにしてDateオブジェクトを生成すれば、getDate()などのメソッドを使ってファイルの日付情報を取り出せます。
一覧を取得する対象のディレクトリを変更した場合はcwd()メソッドを使い、移動先のディレクトリパスを引数に指定します。
サンプル05は、ファイル一覧で取得した最初のファイルの情報をアラートダイアログに表示するものです。なお、環境によってはパッシブモードの設定が必要な場合があります。FTPオブジェクトのpassiveプロパティをtrueに指定すると、パッシブモードに設定できます。
●サンプル05
#target "Bridge"
// Http, Ftpが使えるようにする
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
// FTP転送するサーバー名
var url = "ftp://●●●●●●●●●";
var username = "asc"; // ユーザー名
var pw = "ascii"; // パスワード
var localfile = new File("~/rss_title.jpg"); // 転送元のファイルパス
var filename = "rss_title.jpg"; // 転送先のファイル名
// FTPサーバーへ接続
var ftp = new FtpConnection(url);
ftp.username = username; // ユーザー名
ftp.password = pw; // パスワード
ftp.binary = true; // バイナリモード
ftp.passive = false; // パッシブモード
var flag = ftp.open();
if (flag == true){ // 正常に接続できた場合に処理
if (ftp.ls() == true){ // ファイル一覧を取得し、成功したときのみ処理
alert("ディレクトリ内の全ファイル数:"+ftp.files.length);
alert("最初のファイル名;"+ftp.files[0]);
alert("最初のファイルの日付;"+ftp.dates[0]);
alert("最初のファイルサイズ;"+ftp.sizes[0]+"バイト");
}else{
alert("ファイル一覧を取得できませんでした");
}
ftp.close();
}else{
alert("FTPサーバーに接続できませんでした");
}
localfile.close();
●●●●●●●●●:FTPサーバー名を入れて下さい
◆
BridgeはWeb(HTTP)サーバー、FTPサーバーだけでなくPhotoshopなど他のアプリケーションとも連携でき、使い方次第では強力なツールになります。Bridgeの能力はまだあります。次回はPhotoshopもビックリなピクセル単位の画像処理に挑戦してみましょう。それでは、また次回。