Multer 没有将文件上传到我的服务器,现在已经尝试了两天,眼袋游戏在这个游戏中很强大

Multer not uploading file to my server, been trying for two days now, eyebag game is strong in this one

我不确定我到底做错了什么,就像我真的很困惑,我一直在尝试使用邮递员上传图片。我在可能 ahem 搞砸的地方留下了一些评论。

但是由于某种原因,图像本身没有保存到我的 /public/uploads 文件夹中。所以文件正在发送到服务器但没有保存到存储

这是我的 app.js 文件

const fs = require('fs');
const path = require('path');

const cors = require('cors')
const multer = require('multer');
const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
const formidableMiddleware = require('express-formidable');

const productRoutes = require('./routes/products-routes');
const usersRoutes = require('./routes/users-routes');
const orderRoutes = require('./routes/orders-routes');
const HttpError = require('./models/http-error');

const app = express();
const PORT = 5000;

app.use(formidableMiddleware());
app.use(cors())

app.use('/api/places', productRoutes);
app.use('/api/user', usersRoutes);
app.use('/api/orders', orderRoutes);

//did i set this up wrongly? isn't this the path to display the image back? <------
app.use(express.static('./public'));

app.use((req, res, next) => {
  const error = new HttpError('Page you requested is invalid', 404);
  throw error;
});

mongoose
  .connect(keys.mongoURI)
  .then(() => {
    app.listen(PORT);
  })
  .catch(err => {
    console.log(err);
  });

这就是我实际放置 multer 的地方,但它根本不起作用

const express = require("express");
const userControllers = require('../controllers/users-controllers');
const multer = require('multer');

const router = express.Router();

const MIME_TYPE_MAP = {
     'image/png': 'png',
     'image/jpeg': 'jpeg',
     'image/jpg': 'jpg'
   };

 //I checked this a few times through a few examples, but can someone still see if I made the mistake here? <------
const upload = multer({
    storage: multer.diskStorage({
    destination: function (req, file, cb) {
    cb(null, '../public/uploads')},
    filename: function(req, file, cb){
    cb(null, file.fieldname + '-' + Date.now());
    console.log('start')
         }
     }),
    limits:{fileSize: 500000},
    fileFilter: (req, file, cb) => {
         const isValid = !!MIME_TYPE_MAP[file.mimetype];
         let error = isValid ? null : new Error('Invalid mime type!');
         cb(error, isValid);
       }
    })


//route for dashboard
router.get('/:uid', userControllers.getUser);

//route to edit dashboard
router.patch('/:uid',userControllers.updateUser);

//This one is also based on other people examples <------
router.post('/signup', upload.single("myImage"), userControllers.signUp);

//route for logging in
router.post('/login', userControllers.login);

module.exports = router;

邮递员无论如何都没有向我显示错误,我只是记录了文件本身,所以我知道它在注册处理程序中。路由应该是正确的,因为它正在记录文件。

出于某种原因,bodyparser 和 formidable 无法正确解析我的表单数据,切换到连接 busboy 并使其正常工作

const fs = require('fs');
const path = require('path');

const cors = require('cors')
const multer = require('multer');
const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
var busboy = require('connect-busboy');
const formidableMiddleware = require('express-formidable');

const productRoutes = require('./routes/products-routes');
const usersRoutes = require('./routes/users-routes');
const orderRoutes = require('./routes/orders-routes');
const HttpError = require('./models/http-error');

const app = express();
const PORT = 5000;

const fileStorage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, './public/uploads');
  },
  filename: (req, file, cb) => {
    cb(null, file.fieldname + '-' + Date.now());
  }
});

const fileFilter = (req, file, cb) => {
  if (
    file.mimetype === 'image/png' ||
    file.mimetype === 'image/jpg' ||
    file.mimetype === 'image/jpeg'
  ) {
    cb(null, true);
  } else {
    cb('INVALID FILE!!!', false);
  }
};

const upload = multer({ storage: fileStorage }).single('myImage')

app.use(busboy());
app.use(cors())

app.use('/api/places', productRoutes);
app.use('/api/user', usersRoutes);
app.use('/api/orders', orderRoutes);

app.use(express.static('public'));

app.post('/uploads', function(req,res,next){
  upload(req,res,function(err){   
      console.log(req.file);
      if(err){
        res.json({success:false,message:err});
      }
      else{
        res.json({success:true,message:"Photo was updated !"});
      } 
  });
})

app.use((req, res, next) => {
  const error = new HttpError('Page you requested is invalid', 404);
  throw error;
});

mongoose
  .connect(keys.mongoURI)
  .then(() => {
    app.listen(PORT);
  })
  .catch(err => {
    console.log(err);
  });