2016-07-31 18 views
0

Ich habe Multer als konfiguriert;Umbenennen von Dateien mit Multer

var storage = multer.diskStorage({ 
    destination: function(req, file, cb) { 
    cb(null, '../images/profile'); 
    }, 
    filename: function(req, file, cb) { 
    cb(null, req.body.username + '.jpeg'); // file does not get renamed 
    } 
}); 

var upload = multer({storage: storage}); 

// Route that uses multer 
router.post('/auth/signup/upload', upload.single('image'), function(req, res) { 
    console.log(req.body.username); // contains value 
    res.send(); 
}); 

Obwohl req.body.username einen Wert hat, wird die Datei nicht umbenannt bekommen. Was fehlt mir hier?

+0

Ist der Test 'cb (null, Math.floor (Math.random() * 100) + '.jpeg') - umbenennen? –

Antwort

1

Vom multer Handbuch:

Beachten Sie, dass req.body möglicherweise noch nicht vollständig besiedelt wurden. Es hängt von der Reihenfolge ab, in der der Client Felder und Dateien an den Server sendet.

Leider glaube ich nicht, dass es einen schönen Weg gibt, um das zu lösen. Sie könnten versuchen, die Reihenfolge der Felder in Ihrem HTML-Formular zu ändern, aber dies wird wahrscheinlich nicht zu konsistentem Verhalten in den Browsern führen. Sie könnten stattdessen auch den Benutzernamen für die Abfragezeichenfolge senden (d. H. POST die Datei an http://foo.bar?username=me). Sie können die Datei auch manuell verschieben oder die Zuordnungen zwischen Benutzernamen und Dateien an anderer Stelle speichern.