Corredor

ウェブ、プログラミングの勉強メモ。

promise-ftp を使って FTP 接続先のファイル一覧を取得してみる

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

  • 作者: Ethan Brown,武舎広幸,武舎るみ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/01/20
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

速習ECMAScript6: 次世代の標準JavaScriptを今すぐマスター! 速習シリーズ

速習ECMAScript6: 次世代の標準JavaScriptを今すぐマスター! 速習シリーズ

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 で呼び出せる。

本パッケージを利用してアップロードなんかもできるが、アップロードに関してはより簡潔に行えるパッケージがあるので、次回と次々回に解説する。

neos21.hatenablog.com neos21.hatenablog.com

実際に自分のサイトを管理しているプロジェクトでも利用しているので、以下の GitHub リポジトリをご参考までに。