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);
});
我不确定我到底做错了什么,就像我真的很困惑,我一直在尝试使用邮递员上传图片。我在可能 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);
});