multerとノードを使用して、正しいファイルのアップロードを取得できません

AND4011002849:

私はいくつかのFORMDATAを埋める「従業員」を作成するためのポストの要求を作ってるんだ、このフォームのフィールドは、画像のアップロードのためにあります、問題は、私は何を選ぶか、画像に関係なく、私は常に応答からデフォルトの画像を取得するということですが、ファイル名は、私のローカルディレクトリに正しく保存されています。

employeeRoute.js:

router
    .route('/employee')
    .get(employeeController.getAllEmployee)
    .post(
    authController.protect,
    authController.restrictTo('admin'),
    employeeController.uploadEmployeephoto,
    employeeController.resizeEmployeePhoto,
    employeeController.createEmployee
    );

employeeController.js:

const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  if(file.mimetype.startsWith('image')){
    cb(null, true)
  } else {
    cb(new AppError('Not an image!', 400), false);
  }
};

const upload = multer({
  storage: multerStorage,
  fileFilter: multerFilter
});

exports.uploadEmployeephoto = upload.single('photo');

exports.resizeEmployeePhoto = (req, res, next) => {
  if(!req.file) return next();

  req.file.filename = `employee-photo-${Date.now()}.jpeg`;

  sharp(req.file.buffer)
  .resize(512,512)
  .toFormat('jpeg')
  .jpeg({quality:90})
  .toFile(`public/images/our-experts/${req.file.filename}`);

  next();
}
exports.createEmployee = factory.createOne(Employee);

工場

exports.createOne = Model =>
  catchAsync(async (req, res, next) => {
    console.log(req.file);

    const doc = await Model.create({
      ...req.body,
      path: req.file.path
    });
    res.status(201).json({
      status: 'success',
      data: {
        data: doc
      }
    });
    console.log(req.body);
  });

ここでは、画像の説明を入力します。

AND4011002849:

それは私がちょうどパスに忘れた、単純なミスでした

req.body.photo = req.file.filename

exports.createOne = Model =>
  catchAsync(async (req, res, next) => {
    if(req.file) req.body.photo = req.file.filename;

    const doc = await Model.create(req.body);
    res.status(201).json({
      status: 'success',
      data: {
        data: doc
      }
    });
    console.log(req.body);
  });

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=342989&siteId=1