[英]Issue with uploading images in Express.js
在我的應用程序,我上傳了public / images文件夾內的一些照片。 用於事事精細的工作,但現在不是了。 我得到一個成功的消息,這意味着形象的文件夾,但是,我無法看到它:(在上傳,這是郵遞員給我回來。(POST = HTTP://本地主機:3000 /圖片 ) 。
{
"success": true,
"message": "Image uploaded!"
}
有點奇怪 一切似乎是正確的。 這是我的代碼。
imageRouter
var express = require('express');
var imageRouter = express.Router();
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/images')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + '.jpg')
}
});
var upload = multer({ storage: storage }).single('myImage');
imageRouter.post('/', function (req, res) {
upload(req, res, function (err) {
if (err) {
// An error occurred when uploading
}
res.json({
success: true,
message: 'Image uploaded!'
});
// Everything went fine
})
});
module.exports = imageRouter;
和app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var url = 'mongodb://localhost:27017/larissaApp';
mongoose.connect(url);
var db = mongoose.connection;
db.on('error',console.error.bind(console,'connection error:'));
db.once('open',function(){
console.log("Connected correctly to server");
});
var routes = require('./routes/index');
var users = require('./routes/users');
var newsRouter = require('./routes/newsRouter');
var cityRouter = require('./routes/cityRouter');
var imageRouter = require('./routes/imageRouter');
var mayorRouter = require('./routes/mayorRouter');
var deputyMayorRouter = require('./routes/deputyMayorRouter');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/public', express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
app.use('/news',newsRouter);
app.use('/news',newsRouter);
app.use('/city',cityRouter);
app.use('/image',imageRouter);
app.use('/mayor',mayorRouter);
app.use('/deputymayor',deputyMayorRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
服務器偵聽的部分是我的斌/ WWW文件中。
最后我使用expreess-4.15.2。
有任何想法嗎?
謝謝,
西奧
無論結果如何,您始終都會以成功來回應,因為您沒有在POST /image
路由處理程序中使用return
來停止執行。 只要在發生錯誤時返回響應,您就將停止獲得每個結果的成功響應。
imageRouter.post('/', (req, res) => {
upload(req, res, err => {
if (err) {
// An error occurred when uploading
return res.sendStatus(500)
}
// Everything went fine
return res.json({
success: true,
message: 'Image uploaded!'
});
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.