首页 > 解决方案 > req.body 和 req.file 在 multer 中总是返回空

问题描述

我正在按照这个Academind 教程创建一个节点 API 端点,用于上传body-parser 用于解析json请求和multer解析multipart/form-data请求的图像,但是每次我使用邮递员点击 API 时,我都会变得req.body空虚req.file

这是 multer 实现看起来像

const express = require('express');
const router = express.Router();
const bcrypt = require('bcrypt');
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken');
const checkAuth = require('../middleware/check-auth');
const _ = require('lodash');
const assert = require('chai').assert;
const multer = require('multer');

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/')

    },
    filename: function (req, file, cb) {
        cb(null, new Date().toISOString() + file.filename);
    },
});

const fileFilter = (req, file, cb) => {
    //reject a file
    if (file.mimetype === 'image/jpeg' || file.mimetype == 'image/png')
        cb(null, true);
    else cb(null, false);

}
const upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 * 5
    },
    fileFilter: fileFilter
});

// update profile image
router.post("/update_profile_image", upload.single('image'),  (req, res, next) => {
    console.log(req.file);
    console.log(req.client_id)
    res.send("Done")

});

module.exports = router;

这是我的文件实现app.js

app.use('/uploads', express.static('uploads'));
app.use(bodyParser.urlencoded({
    extended: false
}));
app.use(bodyParser.json());

提前致谢

标签: node.jsfile-uploadmultipartform-datamulterbody-parser

解决方案


推荐阅读