私のExpressアプリケーションでは、詳細をMongoDBに保存するスナップショットを作成します。実際のスナップショットファイルは、スナップショットフォルダの_idに格納されます(例:/snapshots/575fe038a84ca8e42f2372da.png
)。エクスプレスルートパラメータとファイル拡張子を連結します
現在、これらのスナップショットは、ブラウザのフォルダとID(つまり/snapshots/575fe038a84ca8e42f2372da
)に移動してイメージファイルを返すことで、ユーザーが読み込むことができます。しかし、私はより直感的なURLのパスは、ファイルの拡張子を含める必要がありますと思う;すなわち、ユーザは/snapshots/575fe038a84ca8e42f2372da
.PNG
にファイルを取得する必要があります。
これは私が現在持っているものです。
router.get('/:shotID', function(req, res, next) {
// Checks if shot exists in DB
Shots.findOne({
_id: req.params.shotID // More conditions might get put here, e.g. user restrictions
}, (err, result) => {
if (err) {
res.status(404).res.end();
return;
}
var file = fs.createReadStream(`./snapshots/${req.params.shotID}.png`);
file.pipe(res);
});
});
どのように私は、このパスにファイルの拡張子を入れてユーザーを取り込むことができますか?あなたはまた、ファイルの拡張子を含めることができますという名前のパラメータ、一致するcustom regular expressionを提供することができます