2017-09-08 2 views
1

In meinem NodeJS App zum Download habe ich einen statischen Pfad „/ public“, die folgende Struktur hat:NodeJS: wie gefälschten Pfad setzen für Dateien

-public 
    -images 
    -js 
    -posts 
     -2017 
      -07 
      -08 
      -09 

Wie man sehen kann ich einen Ordner jedes Jahr erstellen und jeden Monat, um Dateien zu speichern.

Nun, wenn ich eine Datei aus der Sicht verknüpfen kann ich den Pfad /posts/2017/09/file.txt sehen und ich will nicht diesen

zeigen Gibt es eine Möglichkeit ein setzen gefälschter Pfad (vielleicht mit Parametern), um meine Ordnerstruktur zu verbergen?

+0

können Sie Ihren Code setzen? Wenn ich Ihren Code sehe, kann ich Ihnen vielleicht beim Erstellen von Algorithmen helfen. – turmuka

+0

Welche Art von URL möchten Sie? Wie wäre es mit '/ posts? Datum = 2017-09'? – jfriend00

+0

@ jfriend00 ja oder ersetzen "Beiträge" von "Dateien" so Dateien? Datum = 2017-09 wird auf/posts/2017/09 –

Antwort

3

Für eine URL wie /files?date=2017-09, könnten Sie diese etwas tun:

const path = require('path'); 

// handle routes like this: /files?date=2017-09 
app.get('/files', function(req, res) { 
    let date = req.query.date; 
    // if no date or if it contains illegal characters, then disallow it 
    // this is important to prevent injection of weird paths and ../../ stuff 
    if (!date || /[^\d-]/.test(date)) { 
     return res.status(404).end(); 
    } 
    // I'm not sure what your root path is here, so replace /public with 
    // whatever that is supposed to be 
    let file = path.join('/public/posts', date.replace("-", path.sep)); 
    res.sendFile(file, {dotfiles: "deny"}, function(err) { 
     if (err) { 
      res.status(404).end(); 
     } 
    });   
}); 
+0

Großartig! Ich danke dir sehr –