Я не уверен, что на самом деле я сделал не так, как будто я действительно запутался, и я пытался использовать почтальон для загрузки изображений. Я оставил некоторые замечания местам, где у меня может быть ahem , облажаться.
Однако само изображение по какой-то причине не сохраняется в моей папке / public / uploads. Таким образом, файл отправляется на сервер, но не сохраняется в хранилище
Это мое приложение. js file
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);
});
И именно здесь я на самом деле положил мултер, но он вообще не работает
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;
Почтальон все равно не показывает мне ошибки, и я просто зарегистрировал сам файл, так что я знаю, что он есть в обработчике регистрации. Маршрут должен быть правильным, поскольку он регистрирует файл.