※この記事は「古籏一浩のJavaScriptラボ」の第25回です。過去の記事も合わせてご覧ください。
「Adobe Bridge」のJavaScriptを使ってWeb画像処理を自動化する本連載。前回はWebサーバーから取得したRSSのタイトルを抽出し、Photoshopで画像として保存する方法を紹介しました。BridgeはFTP に対応しており、JavaScriptを使ってファイルをアップロードしたりダウンロードしたりできます。今回は、保存した画像をサーバーにFTPで転送してみましょう。
■シリーズラインナップ
- 第1回 Webサーバーのデータを取得
- 第2回 RSS(XML)の処理
- 第3回 BridgeからPhotoshopのJavaScriptを実行
- 第4回 Photoshopで作成した画像をFTP転送(この記事)
- 第5回 Bridgeで画像フィルタを作成
- 第6回 GUI (グラフィカルユーザーインターフェース)の処理
BridgeでファイルをFTPサーバーに転送してみよう
BridgeでFTP機能を有効にするには、本連載の第22回で説明した以下のスクリプトを最初に記述します。
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
FTPサーバーへのアクセスは、new FtpConnection()を使ってFTPオブジェクトを作成します。new FtpConnection()の引数には接続先のサーバー名を指定します。セキュアなFTPにも対応しています。
FTPオブジェクトを生成しただけではサーバーに接続されませんので、接続前にユーザー名とパスワードなどを設定しておきます。ユーザー名はFTPオブジェクトのusernameプロパティに、パスワードはpasswordプロパティに入れます。また、今回は画像ファイルの転送なので、binaryプロパティにtrueを設定してバイナリ モードでファイルを送信します。
以上で設定完了ですので、open()メソッドを使ってFTPサーバーに接続します。open()の戻り値がtrueなら接続に成功、falseなら失敗です。falseの場合はサーバー名やパスワードなどを再度確認しましょう。
ファイルの転送にはput()メソッドを使います。転送元のローカルファイル名を第1引数に、転送先のファイル名を第2引数に指定します。FTPサーバーへの転送が終わったらclose()で接続を終了します。
サンプル01はローカルのホームフォルダにある「rss_title.jpg」ファイルをFTPサーバーへ転送するものです。なお、サンプル01以降すべてのサンプルでユーザー名「asc」、パスワード「ascii」としています。実際に使用する際は、FTPサーバー上のユーザー名とアカウント名を設定してください。
●サンプル01
#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; // バイナリモード
var flag = ftp.open();
if (flag == true){ // 正常に接続できた場合に処理
ftp.put(localfile, filename); // ファイルを転送
ftp.close();
}else{
alert("FTPサーバーに接続できませんでした");
}
localfile.close();
●●●●●●●●●:FTPサーバー名を入れて下さい