Node.jsでファイルをダウンロードする

↓このページを参考に書いてみた。っていうかほとんどそのまんまだけど。

 cf. [NodeJS] ファイルをダウンロードする – YoheiM.NET

var http = require('http');
var fs = require('fs');
var path = require('path');

var url = process.argv[2];
console.log(url);
var filename = path.basename(url);

// output stream
var outFile = fs.createWriteStream(filename);

var req = http.get(url, function(res) {
  res.pipe(outFile);
  res.on('end', function() {
    outFile.close();
  });
});

// error handler
req.on('error', function(err) {
  console.log('Error: ' + err.message);
  return;
});

変えたのは URL から保存するファイル名を決めるとことだけ。

このスクリプトのキモは、res.pipe でデータをアウトプットストリームに流しこんでいるところ。で、end イベントが発生したらストリームを閉じる、と。