In meiner Express-App erstelle ich Snapshots, deren Details ich in MongoDB speichern. Die tatsächlichen Snapshot-Dateien werden im Snapshot-Ordner unter ihrer _id gespeichert, z. B. /snapshots/575fe038a84ca8e42f2372da.png
.Verkettete Expressroute Parameter und Dateierweiterung
Diese Momentaufnahmen können derzeit von einem Benutzer geladen werden, indem sie in ihrem Browser zu dem Ordner und der ID navigieren, d. H. /snapshots/575fe038a84ca8e42f2372da
, die die Bilddatei zurückgibt. Ich denke, um intuitiver zu sein, sollte der URL-Pfad die Dateierweiterung enthalten; d.h. der Benutzer sollte /snapshots/575fe038a84ca8e42f2372da
.PNG
eingeben müssen, um die Datei zu erhalten.
Das ist, was ich habe zur Zeit:
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);
});
});
Wie kann ich den Benutzer übernehmen in diesem Pfad in der Dateierweiterung setzen?