2017-06-13 71 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