2016-05-31 10 views
0

Überschreiben Ich versuche, Bild im lokalen Ordner hochzuladen sowie den Bildnamen in MongoDB zu speichern.Bild wird in lokalen Ordner mit Multer in Node.js App

var uploadDir=__dirname+'/uploads'; 
var images=Date.now()+'.jpg'; 
var storage=multer.diskStorage({ 

    destination:function(request, file, callback){ 
     callback(null, uploadDir); 
     }, 
     filename:function(request, file, callback){ 
      console.log(file); 
      callback(null, images); 
      } 
    }); 
    var upload=multer({storage:storage}).single('image'); 

Oben ist der Multer-Konfigurationscode. Das Problem ist, dass, während ich ein Bild einfüge, es im lokalen Ordner erfolgreich gespeichert wird, aber ich wieder ein anderes Bild speichere, dann überschreibt das neue Bild das vorherige Bild im Ordner. In MongoDB sind die Namen der Bilder jedoch unterschiedlich.

+0

Hochladen ersten Mal benennen (benennen Sie sie, wo Sie Bild speichern unter Verwendung multer) mit so etwas wie Old- .jpg dann andere Bild hochladen und prüfen, ob Bild hochgeladen mit Namen ist das gleiche wie der vorherige –

Antwort

0

Sie haben einen Bildwert als Date.now oben auf der Datei hinzugefügt, der einmal beim Laden ausgeführt wird.

Versuchen Sie den folgenden Code.

var uploadDir = __ Verzeichnisname + '/ uploads';

var storage = multer.diskStorage ({

destination:function(request, file, callback){ 
    callback(null, uploadDir); 
    }, 
    filename:function(request, file, callback){ 
     var images = '.jpg'; 
     console.log(file); 
     images += Date.now()+images; 
     callback(null, images); 
     } 
}); 
var upload=multer({storage:storage}).single('image'); 
+0

hey .... Ich benutze Benutzer-Code, jetzt Bilder werden nicht überschrieben, aber jetzt die Bilder umbenennen ist etwas wie ".jpg1464689634067.jpg1464689686302.jpg1464689634067.jpg1464689845313.jpg1464689634067.jpg1464689686302.jpg1464689634067 "Ich meine zu sagen, dass jetzt der Bildname immer wieder wiederholt. –

+0

nur Dateiname: Funktion (Anfrage, Datei, Rückruf) { images = '.jpg'; Bilder + = Date.now() + Bilder; Rückruf (null, Bilder); } dann funktioniert es –

+0

Ich habe eine Zeile Code geändert. Nur einmal überprüfen. –

Verwandte Themen