2017-06-13 88 views
0

在我的应用程序中,我在public/images文件夹中上传了一些图片。过去一切都很好,但现在不再了。我得到一个成功的消息,这意味着形象的文件夹,但是,我无法看到它:(在被上传。而这正是邮递员给我回电话。(POST = http://localhost:3000/image)。在Express.js中上传图片的问题

{ 
    "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

任何想法?

谢谢,

泰奥。

回答

1

由于您没有使用returnPOST /image路由处理程序中停止执行,因此无论结果如何,您都始终以成功响应。只要在发生错误时返回响应,您就会停止针对每个结果获得成功响应。

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!' 
     }); 
    }) 
}); 
+0

我添加了您的代码,但即使获得成功消息,我仍然有同样的问题! – Theo

+0

@Theo尝试将您的存储目标更改为'../ public/images',您的'public'目录位于您的项目根目录中,'imageRouter'位于您的文件夹中一级的'/ routers /'内。 – peteb

+0

还没有:( – Theo