今回はFTPの処理について説明します。
CS3でサポートされているのはftpだけでなくsftpも対応しています(こちらではセキュアな環境での動作は確認していません)。
FTPの前に、HTTP同様以下のスクリプトを記述しておく必要があります。これがないとエラーとなり動作しません。これもHTTPの時と同様で最初に一度だけ実行すればよく、毎回チェックする必要はありません。
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');
}
それでは、FTPでJPEG画像ファイルをダウンロードしてローカルのハードディスクに保存してみます。FTPサーバーにアクセスするには、サーバー名とユーザー名が必要になります。ここではサンプルとして以下のようにしてあります。
CS3でサポートされているのはftpだけでなくsftpも対応しています(こちらではセキュアな環境での動作は確認していません)。
FTPの前に、HTTP同様以下のスクリプトを記述しておく必要があります。これがないとエラーとなり動作しません。これもHTTPの時と同様で最初に一度だけ実行すればよく、毎回チェックする必要はありません。
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');
}
それでは、FTPでJPEG画像ファイルをダウンロードしてローカルのハードディスクに保存してみます。FTPサーバーにアクセスするには、サーバー名とユーザー名が必要になります。ここではサンプルとして以下のようにしてあります。
サーバー名:ftp://www.openspc2.org/
ユーザー名:adobe
パスワード:indesign
アクセスするディレクトリ(フォルダ)はユーザーのホームディレクトリとし、そこにsample.jpgファイルがあるものとします。
まず、アクセスするFTPサーバーを指定し、FTP通信用のオブジェクトを作成する必要があります。これはnew FtpConnection()を使い、パラメータにアクセスするFTPサーバー名を指定します。例えば ftp://www.openspc2.org/ にアクセスするのであれば、以下のように書きます。
ftp = new FtpConnection("ftp://www.openspc2.org/");
次に、ユーザー名を指定します。ユーザー名はnew FtpConnection()により作成されたFTPオブジェクトのusernameプロパティに設定します。パスワードも同様に、FTPオブジェクトのpasswordプロパティに設定します。
アクセスするディレクトリを指定するには、FTPオブジェクトのftpDirにアクセスしたいディレクトリのパスを指定します。
この時点ではFTPサーバーにはアクセスしません。ファイルをダウンロードする時点でサーバーにアクセスを行います。
JPEGファイルをダウンロードするには、FTPオブジェクトのget()を使います。最初のパラメータにダウンロードするファイル名を指定します。sample.jpgであればftp.get("sample.jpg")とします。get()には、2番目のパラメータも指定する必要があります。2番目のパラメータは、ローカルのハードディスクに保存する時のファイルオブジェクトを指定します。ファイルオブジェクトはnew File()を使って作成することができます。new File()のパラメータに保存先のパスとファイル名を指定します。
無事にファイルがダウンロードされるとget()はtrueを返します。失敗した場合にはfalseを返すので、これによりエラーメッセージを表示する、処理を中断するといったことが可能になります。
ファイルをダウンロードしたら、close()を使ってサーバーとの通信を終了します。サンプル1が実際のプログラムになります。
ファイルがダウンロードされ、ローカルのハードディスクに保存されれば、これまで通り指定したパスにある画像ファイルを読み込み配置することができます。サンプル2が、FTPサーバーからダウンロードしたJPEGファイルをInDesign上に配置するものです。この場合、ダウンロードしたファイルは不要なので、remove()を使ってファイルを削除します。画像をリンクする場合には、削除しないようにしてください。
サンプルではJPEG画像ファイルをダウンロードしていますが、テキストファイルやPDFでも同様に処理することが可能です。
●サンプル1
// 画像ファイルをダウンロード
getFtpData("ftp://www.openspc2.org","adobe","indesign");
// FTPを使って指定されたサーバーのデータを読み込みファイルオブジェクトを返す
function getFtpData(sURL, userName, password){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib =
new ExternalObject("lib:webaccesslib");
}
var ftp = new FtpConnection(sURL);
ftp.username = userName;
ftp.password = password;
ftp.ftpDir = "./";
var file = new File("%7E/downloadSample.jpg");
var flag = ftp.get("%7E/sample.jpg",file);
if (flag == false){
alert("ファイルをダウンロードできませんでした");
}
file.close();
ftp.close();
return file;
}
●サンプル2
// FTPサーバーにある画像ファイルをダウンロードしてInDesign上に配置する
(function(){
var imgObj = app.activeDocument.textFrames.add();
imgObj.visibleBounds = ["2cm", "3cm", "10cm", "14cm"];
imgObj.contentType = ContentType.graphicType; // 画像タイプに設定
var fileObj = getFtpData("ftp://www.openspc2.org","adobe",
"indesign","./","./sample.jpg", "%7E/sample.jpg");
imgObj.place(fileObj);
imgObj.fit(FitOptions.fillProportionally);
fileObj.remove();
})();
// FTPを使って指定されたサーバーのデータを読み込みファイルオブジェクトを返す
function getFtpData(sURL, userName, password, dir, downloadFile,
tempFile){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib =
new ExternalObject("lib:webaccesslib");
}
var ftp = new FtpConnection(sURL);
ftp.username = userName;
ftp.password = password;
ftp.ftpDir = dir;
tempFile = new File(tempFile);
var flag = ftp.get(downloadFile,tempFile);
if (flag == false){
alert("ファイルをダウンロードできませんでした");
}
ftp.close();
return tempFile;
}
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
2009年初なのでおきまりのご挨拶を。
「あけましておめでとうございます。今年もよろしくお願いします」
年末年始はいろいろ作ったりしてました。作りかけみたいなのと、自分の勉強用みたいなものが多い(試験的なものもあります)のですが、何かのお役に立てば。
・【短期集中連載】この冬作ろう!jQueryプラグイン講座
< http://www.openspc2.org/JavaScript/Ajax/jQuery_plugin/index.html
>
・Adobe Photoshop CS4使い方辞典
< http://www.openspc2.org/reibun/PhotoshopCS4/
>
・Adobe Photoshop CS4自動化作戦
< http://www.openspc2.org/book/PhotoshopCS4/
>
・Adobe Illustrator CS4自動化作戦
< http://www.openspc2.org/book/IllustratorCS4/
>
・フルサイズフリー素材(試験的に作成。というよりHDDの空きがないので…)
< http://www.openspc2.org/sozai/fullsize/index.html
>
・Google Chrome ver 1.0 使い方辞典(もうver 2.0の話が…)
< http://www.openspc2.org/reibun/GoogleChrome/1.0/
>

- 改訂第4版 JavaScript ポケットリファレンス
- 古籏 一浩
- 技術評論社 2006-10-18
- おすすめ平均
JavaScriptを使ったプロジェクトのお供に是非
JavaScript仮免者以上の方へ
バランスの良いバイブル
中級者向けです。
by G-Tools , 2009/01/19