2016-11-01 2 views
0

Ich erlaube Benutzern, Dateien hochzuladen und möchte wissen, ob es möglich ist, nur dem Benutzer zu erlauben, der seine Dateien hochgeladen hat.Hochladen von Dateien im Knoten

Derzeit lade ich gerade diese in einen statischen Ordner (Public) hoch.

+1

Diese Frage ist außergewöhnlich breit und fragt tatsächlich "Wie implementiere ich Authentifizierung, um den Zugriff auf bestimmte Dateien zu beschränken." Ich sage nicht, dass es eine schlechte Frage ist, da Sie bereits Auth implementiert haben, aber die Aktion zum Schutz einer statischen Datei vor dem Senden an einen nicht autorisierten Benutzer sollte derselbe sein wie ein Schutz einer Sektion Ihrer Website vor dem Zugriff durch Unbefugte Benutzer. – gelliott181

+0

In diesem Sinne, haben Sie bereits vorhandenen Authentifizierungscode und Strategien implementiert? – gelliott181

+0

Ich habe einen umfangreichen Authentifizierungsprozess. Ich fordere sie sogar auf, sich zu registrieren und ihr Konto zu aktivieren, bevor sie die Anwendung nutzen. – user3183411

Antwort

0

Legen Sie einfach eine Route zum Rendern der Datei fest (dies verringert die Leistung) Speichern Sie die Datei unter: filename.extension.userid in einem nicht öffentlichen Ordner, z. B. ein Verzeichnis namens upload.

eine Route Legen Sie die Anfrage auf dem Verzeichnis-Upload zu fangen:

app.get("/upload/:filename", function(req, res){ 
    var fname = req.params.filename; 
    var userid = req.user.id; // RETRIEVE AUTHENTICATED USER ID 

    var fullname = fname+"."+userid; 
    fs.readFile(__dirname+"/../public/upload/"+fullname, 'base64', function(err, data){ 
     if(err || !data) return res.status(404); 
     res.set('Content-Disposition', 'attachment; filename="'+fname+'"'); 
     res.set('Content-Type', 'application/pdf'); // example for pdf 
     return res.end(data, 'base64'); 
    }); 
}); 
0

ich keinen Grund, warum Sie wurden vermutlich mit einer anderen Route mit dem Hochladen zu handhaben finden konnte. Ich konnte auf derselben Route posten. Alles, was ich tun musste, war, den Pfad einzubeziehen und entsprechend einzustellen.

var folder = newPath = path.join(__dirname, '..', './uploads') 
 
var newPath = folder + '/' + callback.fileName; 
 

 
fs.writeFile(newPath, data, function(err) { 
 

 
    if (err) { 
 
    console.log(err) 
 
    } else { 
 
    //Do stuff 
 
    } 
 
});

Nachdem die Datei hochgeladen wurde, war ich dann in der Lage meine Aufgabe abzuschließen.

+0

Diese Antwort scheint relativ weit von dem entfernt zu sein, was Sie gefragt haben. All dieser Code lädt die Datei in ein etwas anderes Verzeichnis. Es schützt die Datei nicht, was Ihre Frage beinhaltete ("erlauben Sie nur dem Benutzer, der seine Dateien hochgeladen hat.") Daher kann ich Ihnen empfehlen, mit Ihren Fragen so klar wie möglich vorzugehen helfe nicht, wenn die Informationen, die wir erhalten, mehrdeutig sind und Informationen fehlen. – gelliott181