Node.js・npm でも FTP 通信ができるのじゃ。
node-ftp
というパッケージで、FTP 通信ができる。このパッケージをラップして Promise 化したのが promise-ftp
だ。
node-ftp
および promise-ftp
は FTP コマンドがひととおり使えるので、今回は接続先のディレクトリ配下のファイル一覧を取得してみようと思う。
promise-ftp
のインストールは以下のとおり。
$ npm i -D promise-ftp
以下のように ftp.js
を実装する。
// FTP 接続先情報 const user = 'user'; const password = 'password'; const host = 'example.com'; const PromiseFtp = require('promise-ftp'); const promiseFtp = new PromiseFtp(); promiseFtp.connect({ user : user, password: password, host : host }) .then((serverMessage) => { // serverMessage は応答するサーバの場合にのみ返される console.log('Connected', serverMessage); // 「html-dir/」ディレクトリに移動する return promiseFtp.cwd('html-dir'); }) .then((currentDir) => { console.log('Change Working Directory', currentDir); // カレントディレクトリのファイル一覧を取得する return promiseFtp.list(); }) .then((list) => { console.log('Directory Listing'); // 一覧表示 console.dir(list); // 切断 return promiseFtp.end(); }) .then((endResult) => { // endResult は false なら正常終了 console.log('End', endResult); }) .catch((error) => { console.log('Error', error); });
Promise で書けるのでコールバック地獄に陥らず、見通しが良い。
ファイル一覧となる変数 list
は、オブジェクトの配列が返されるので、console.dir()
を使用して表示させた。この辺はお好みで整形すれば良いかと。
実行する際は
$ node ftp.js
とすれば良い。package.json
の "scripts"
にこのまま書けば npm run
で呼び出せる。
本パッケージを利用してアップロードなんかもできるが、アップロードに関してはより簡潔に行えるパッケージがあるので、次回と次々回に解説する。