req node form fileupload files expressjs data javascript node.js express multer

javascript - node - save file express



req.files no está definido al cargar el archivo con multer (1)

Estoy intentando crear una aplicación Node.js en Express.js 4 que cargue una imagen. Decidí usar el módulo multer pero no puedo acceder al archivo cargado a través de archivos req.files . Aquí está el código que estoy usando. Lo restringí a aquellas partes que considero relevantes.

Código de Jade:

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

en routes / 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 }

salida:

files: undefined body: {}

El archivo se almacena en la carpeta de uploads pero no puedo acceder a su información en req.files de req.files . ¿Alguien puede ayudarme?


Cuando se usa upload.single() , según la documentación de multer, el archivo resultante debe estar en archivo req.file , no en req.file req.files . Vea el ejemplo en su documento aquí .

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 })

Y, aquí está el documento real para upload.single() :

.single (nombre de campo)

Acepte un solo archivo con el nombre fieldname. El único archivo se almacenará en el archivo requerido.