2015-08-14 5 views
13

Je suis en train de créer une application Node.js dans Express.js 4 qui télécharge une image. J'ai décidé d'utiliser le module multer mais je ne peux pas accéder au fichier téléchargé via req.files. Voici le code que j'utilise. Je l'ai limité aux parties que je crois pertinentes.req.files est indéfini lors du téléchargement de fichier avec multer

Code Jade:

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

Itinéraires/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 
} 

sortie:

files: undefined 
body: {} 

Le fichier est stocké dans le dossier uploads mais je ne peux pas accéder à son informations au req.files. Quelqu'un peut-il m'aider?

Répondre

17

Lorsque vous utilisez upload.single(), par la documentation multer, le fichier résultant doit être req.file, pas req.files. Voir l'exemple 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 
}) 

Et, voici la doc réelle pour upload.single():

.single (fieldname)

Accepter un seul fichier avec le nom nomchamp. Le fichier unique sera stocké dans req.file.