express4のアプリでも、ダウンロード機能を実装できます。
集計した結果を利用ユーザに渡すだとか、内製ツールでは割りと使いそうな処理ですね。
実際のところ
以前書いたapp.jsの'/user/:id/:page'にアクセスした時、spawn.jsをダウンロードさせる場合を想定します。
追加の要件として
- file_{pageNUM}.jsと改名
- エラーを通知
- ダウンロードが終わったら、コンソールにログ
というケースを想定した実装は以下の通り。
app.route('/user/:id/:page') // 中略 .get(function (req, res) { var fileURL = '/Users/shuzo_kino/node/statictest/spawn.js'; var fileName = 'file_' + req.params.page + '.js'; res.download(fileURL, fileName, function(err){ if (err) { console.log('error.'); } else { console.log('download for ' + req.params.id + ' done.'); } }) }) //後略 });
/user/2/7にアクセスした際のコンソールに出るログは以下の通り。
$ node app.js Example app listening on port 3000! Wed, 17 Feb 2016 13:56:03 GMT Called. :id value => 2 Called. :page value => 7 req.path /user/2/7 download for 7 done.
ダウンロードフォルダには、「file_7.js」