2013/08/27更新

[NodeJS] ファイルをダウンロードする

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日も超マイナーネタですが、node.jsを用いてテキストファイルやバイナリーファイルをダウンロードする方法をブログに書きたいと思います。

画像



テキストファイルをダウンロードする

まずはテキストファイルのダウンロードです。今回はiTunesのRSS(=XMLファイル)をダウンロードします。
httpモジュールを使って、以下のようにダウンロードすることが出来ます。
// モジュールロード
var http = require('http');

// ダウンロード先URLを指定する
var url = 'http://itunes.apple.com/jp/rss/topsongs/limit=100/xml';

// ダウンロードする
var rss = ''; 
var req = http.get(url, function (res) {
    
    // テキストファイルの場合は、エンコード指定は重要!
    res.setEncoding('utf8');

    // データを受け取るたびに、文字列を追加
    res.on('data', function (xml) {
        rss += xml;
    });

    // ファイルのダウンロードが終わるとendイベントが呼ばれる
    res.on('end', function () {
        console.log('finish loading rss feed.');
    }); 
});

// 通信エラーなどはここで処理する
req.on('error', function (err) {
    console.log('Error: ', err); return;
});
こんな感じで、httpモジュールとrequest,responseオブジェクトを使ってファイルダウンロードが出来ます。



画像などのバイナリーファイルをダウンロードする

続いてバイナリーファイルです。
今回はダウンロードした内容をそのままファイルへ出力するサンプルです。
// モジュールロード
var http = require('http');
var fs = require('fs');

// URLを指定 
var url = 'http://yoheim.net/image/269.jpg';

// 出力ファイル名を指定
var outFile = fs.createWriteStream('file.jpg');

// ダウンロード開始
var req = http.get(url, function (res) {

    // ダウンロードした内容をそのまま、ファイル書き出し。
    res.pipe(outFile);

    // 終わったらファイルストリームをクローズ。
    res.on('end', function () {
        outFile.close();
    }); 
});

// エラーがあれば扱う。
req.on('error', function (err) {
    console.log('Error: ', err); return;
});
テキストファイルと似たような感じで、ファイルをダウンロード出来ます。



最後に

簡単な内容ですが、nodejsでHTTPリクエストを送って、ファイルをダウンロードする方法でした。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。