与 Express.js

Multer with Express.js

我在使用 Multerexpress.js 时遇到一些问题。所以这很好用:

const multer = require('multer');
let upload = multer({dest: 'uploads/'});

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

但是当我尝试这样做时,req.file is undefined:

const multer = require('multer');
let upload = multer({dest: 'uploads/'});
router.route('/', upload.single('image'))
    .post(function (req, res, next) {
        console.log(req.file);
        let memory = new Memory();
        Object.assign(memory, req.body);
        memory.save(function (err) {
            if (err) {
                return res.send(err);
            }
            res.json({message: 'Memory Created', memory});
        });
    })

只是想知道如果我想将 routes.jsserver.js 分开,正确的语法是什么。

我也试过这个:

const multer = require('multer');
let upload = multer({dest: 'uploads/'});
router.route('/')
    .post(upload.single('image'), function (req, res, next) {
        console.log(req.file);
        let memory = new Memory();
        Object.assign(memory, req.body);
        memory.save(function (err) {
            if (err) {
                return res.send(err);
            }
            res.json({message: 'Memory Created', memory});
        });
    })

谢谢

试试这个:

router.post('/', upload.single('image'), function (req, res, next) {
    console.log(req.file);

    // Do something with the file
});

确保 post 请求正文已将文件附加到 image 属性。如果你是用Postman来测试的话,应该是这样的: