簡體   English   中英

req.body 似乎未定義

[英]req.body seems to be undefined

我正在嘗試使用 multer 和 postman 上傳圖像,並且上傳正常。 我剛遇到一個(大)問題:當我希望它是 req.body.name + "jpg" 時,照片的名稱總是 undefined.jpg。 req.body 有問題嗎? 這是我的代碼: 在 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;

在上傳.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}`,
    });
  }
};

在 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;

你知道發生了什么嗎? 感謝您的幫助

嘗試在 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}));

基本上在您的upload.controller.js中上傳的文件不會在req.body中可用。 您必須在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM