Expressで特定のパスだけ静的ファイルを配信する方法
本日APIを眺めていて、たまたま気づいたのでメモ。
何も考えずにやるなら、fs.readFile
で読み込んでres.send
なんですが、最初からAPIがありました。
それはこちらのres.sendFile
http://expressjs.com/en/4x/api.html#res.sendFile
使い方(APIまんま)
app.get('/file/:name', function (req, res, next) { var options = { root: __dirname + '/public/', dotfiles: 'deny', headers: { 'x-timestamp': Date.now(), 'x-sent': true } }; var fileName = req.params.name; res.sendFile(fileName, options, function (err) { if (err) { console.log(err); res.status(err.status).end(); } else { console.log('Sent:', fileName); } }); });
ちなみに、v4.8.0より前はres.sendfile
とCamelでないメソッド名なのでご注意ください。