Подтвердить что ты не робот

Req.files undefined при загрузке файла с 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. Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

При использовании upload.single() для каждой документации мультера результирующий файл должен находиться в 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(имя_поля)

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