2015-08-14 6 views
13

Ich versuche eine Node.js-Anwendung in Express.js 4 zu erstellen, die ein Bild hochlädt. Ich entschied mich, das Modul multer zu verwenden, kann aber nicht auf die hochgeladene Datei über req.files zugreifen. Hier ist der Code, den ich verwende. Ich beschränkte mich auf jene Teile, die meiner Meinung nach relevant sind.req.files ist beim Hochladen von Dateien mit multer nicht definiert

Jade Code:

form(method="POST", action="createPost", enctype="multipart/form-data") 
     input(type="file", name="photo") 
     br 
     input(type="submit" value="upload") 

in Routen/admin.js:

var express = require('express'); 
var multer = require('multer'); 
var router = express.Router(); 
var upload = multer({dest: './uploads/'}); 

router.post('/createPost', upload.single('photo'), function(req, res, next) { 
    console.log('files:', req.files); 
    console.log('body:', req.body); 
    // more code 
} 

Ausgang:

files: undefined 
body: {} 

Die Datei wird im uploads Ordner gespeichert ist, aber ich kann nicht seine zugreifen Informationen in req.files. Kann mir jemand helfen?

Antwort

17

Wenn Sie upload.single() verwenden, sollte die resultierende Datei in der mehrfachen Dokumentation in req.file, nicht req.files sein. Siehe das Beispiel in their doc here.

app.post('/profile', upload.single('avatar'), function (req, res, next) { 
    // req.file is the `avatar` file 
    // req.body will hold the text fields, if there were any 
}) 

Und hier ist die eigentliche doc für upload.single():

.Single (Feldname)

eine einzelne Datei mit dem Namen Feldnamen übernehmen. Die einzelne Datei wird in req.file gespeichert.

Verwandte Themen