[英]req.body seems to be undefined
I'm trying to ulpoad an image with multer and postman and the upload is working.我正在尝试使用 multer 和 postman 上传图像,并且上传正常。 I just got one (big) problem: the name of the photo is always undefined.jpg when I want it to be req.body.name + "jpg".
我刚遇到一个(大)问题:当我希望它是 req.body.name + "jpg" 时,照片的名称总是 undefined.jpg。 Is there a problem with the req.body?
req.body 有问题吗? Here is my code: In router.js:
这是我的代码: 在 router.js 中:
const router = require("express").Router();
const userController = require("../controllers/user.controller");
const authController = require("../controllers/auth.controller");
const uploadController = require("../controllers/upload.controller")
const multer = require("multer")
// auth
router.post("/register", authController.signUp);
router.post("/login", authController.signIn);
router.get("/logout", authController.logout);
//user display block
router.get("/", userController.getAllUsers);
router.get("/:id", userController.userInfo);
router.put("/:id", userController.updateUser);
router.delete("/:id", userController.deleteUser);
router.patch("/follow/:id", userController.follow);
router.patch("/unfollow/:id", userController.unfollow);
// upload
router.post("/upload", uploadController.upload)
module.exports = router;
in upload.controller.js:在上传.controller.js 中:
const uploadFile = require("../middleware/upload.middleware");
module.exports.upload = async (req, res) => {
try {
await uploadFile(req, res);
if (req.file == undefined) {
return res.status(400).send({ message: "Please upload a file!" });
}
res.status(200).send({
message: "Uploaded the file successfully: " + req.body.name + ".jpg",
});
} catch (err) {
res.status(500).send({
message: `Could not upload the file: ${req.body.name + ".jpg"}. ${err}`,
});
}
};
And in upload.middleware.js:在 upload.middleware.js 中:
const util = require("util");
const multer = require("multer");
const maxSize = 2 * 1024 * 1024;
let storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, __dirname + "/../client/public/uploads/profil");
},
filename: (req, file, cb) => {
cb(null, req.body.name + ".jpg");
},
});
let uploadFile = multer({
storage: storage,
limits: { fileSize: maxSize },
}).single("file");
let uploadFileMiddleware = util.promisify(uploadFile);
module.exports = uploadFileMiddleware;
Do you have any idea what's happening?你知道发生了什么吗? Thanks for your help Alx
感谢您的帮助
try to use app.use(express.json()) in index.js尝试在 index.js 中使用app.use(express.json())
var express = require('express')
var app = express()
var port = process.env.PORT || 8000
var cors = require('cors');
var routes = require('./src/routes');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use(routes)
app.listen(port, () => console.log(`localhost:${port}));
basically in your upload.controller.js The uploaded file wont be available in req.body .基本上在您的upload.controller.js中上传的文件不会在req.body中可用。 You have to use req.fil e in your controller.
您必须在 controller 中使用req.file 。
const uploadFile = require("../middleware/upload.middleware");
module.exports.upload = async (req, res) => {
try {
await uploadFile(req, res);
if (req.file == undefined) {
return res.status(400).send({ message: "Please upload a file!" });
}
res.status(200).send({
message: "Uploaded the file successfully: " + req.file.filename
});
} catch (err) {
res.status(500).send({
message: `Could not upload the file: ${req.file.filename}. ${err}`,
});
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.