req.files не определен при загрузке файла с помощью multer

Я пытаюсь создать приложение Node.js в Express.js 4, которое загружает изображение. Я решил использовать модуль multer, но не могу получить доступ к загруженному файлу через req.files. Вот код, который я использую. Я ограничил его теми частями, которые я считаю важными.

Нефритовый код:

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

в маршрутах/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
}

выход:

files: undefined
body: {}

Файл хранится в папке uploads, но я не могу получить доступ к его информации в req.files. Может кто-нибудь мне помочь?


person arne.z    schedule 14.08.2015    source источник


Ответы (1)


При использовании upload.single(), согласно документации multer, результирующий файл должен находиться в req.file, а не req.files. См. пример здесь.

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

И вот фактический документ для upload.single():

.single(имя поля)

Принять один файл с именем fieldname. Один файл будет храниться в req.file.

person jfriend00    schedule 14.08.2015