2017-12-19 7 views
0

Ich benutze Multer, um ein Bild hochzuladen, und ich erzeuge einen Link, um in eine Datenbank zu speichern, aber um dies zu tun, speichere ich zuerst die Datei auf dem Server. Der "Link" ist der Name der Datei zusammen mit ihrer Erweiterung, aber ich habe Probleme damit, die globale Variable für "link" einzustellen, um sie später in der Datenbank zu speichern ODER vielleicht eine Funktion auszuführen?Setze globale Variable in Multer Variable

var link; 
var storeImageData = multer.diskStorage({ 
    destination: function(req, file, callback) { 
     callback(null, './uploads'); 
    }, 
    filename: function(req, file, callback) { 
     var fileType = file.originalname; 
     link = shortid.generate() + "." + fileType; 
     callback(null, link); 
    } 
}); 

console.log(link); 

Wie Sie sehen können, versuche ich "Link" zu setzen, aber das wird offensichtlich nicht funktionieren. Gibt es eine Möglichkeit, dies zum Funktionieren zu bringen? Oder etwas, das ich untersuchen sollte?

Antwort

1

Sie können den Link req speichern und beim Speichern auf die Datenbank darauf zugreifen. her ein Beispiel:

In der Dateiname Funktion:

filename: function(req, file, callback) { 
     var fileType = file.originalname; 
     link = shortid.generate() + "." + fileType; 
     req.link = link; //add this line 
     callback(null, link); 
    } 

Dann in Ihrem "speichert db" middlware Sie auf den Link am req.link zu bekommen.

+0

Vielen Dank für Ihre Eingabe, Sello. Ich konnte dies am Ende nicht nutzen, da req.link in meiner Middleware nicht erreichbar war. Ich erkannte jedoch am Ende, warum mein Code nicht funktionierte, weil die Platzierung meiner globalen Variablen nicht im richtigen Block lag. Es funktioniert jetzt perfekt mit diesem behoben. Da ich socket.io verwende, musste meine globale Variable außerhalb der Haupt-Socket-Verbindung platziert werden. – AlphaDaemon