2016-01-06 1 views
0

routes.jstéléchargement de fichier multer ne fonctionne pas

module.exports=function(app, upload){ 

     var postingsController=require('../controllers/postings.server.controller'); 

     app.post('/postings', postingsController.savePosting); 

    } 

controller.js

var multer=require('multer'); 

    exports.savePosting=function(req, res, next){ 

     // this diskstorage function is not at all executed 
     var storage = multer.diskStorage({ 
      destination: function (req, file, cb) { 
       cb(null, './uploads') 
      }, 
      filename: function (req, file, cb) { 
       console.log(file); 
       cb(null, file.filename + '.' + 'jpg'); 
      } 
     }); 

     var upload = multer({ storage: storage }); 
     upload.single('attachment'); 

     res.json({ message: "success" }); 

    } 

quelqu'un peut me dire exactement quelle ligne fichier téléchargements. DO j'écris la configuration diskstorage multer dans le fichier de configuration express principal ou puis-je écrire n'importe où. Par ailleurs je peux voir la réponse de json qui est de la ligne

Répondre

1

Typiquement le middleware est créé et inséré en dehors de tous les gestionnaires de route réels. Par exemple:

routes.js

var multer = require('multer'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, './uploads') 
    }, 
    filename: function (req, file, cb) { 
    console.log(file); 
    cb(null, file.filename + '.' + 'jpg'); 
    } 
}); 
var upload = multer({ storage: storage }); 

module.exports = function(app, upload) { 
    var postingsController = require('../controllers/postings.server.controller'); 

    app.post('/postings', 
      upload.single('attachment'), 
      postingsController.savePosting); 
}; 

controller.js

exports.savePosting = function(req, res, next) { 

    // Use `req.file` to access attachment 

    if (req.file) 
    res.json({ message: "success" }); 
    else // no file uploaded 
    res.json({ message: "failure" }); 
}; 
0


Multer est un middleware, ce qui signifie qu'il est ajouté en tant que paramètre à votre itinéraire en la plupart des cas. Donc, la syntaxe actuelle serait:
app.post ("/postings", multer ({ ... }), postingsController.savePosting);
Multer est appelé entre la demande de "/ postings" et la fonction finale pour faire tout le travail de fichier pour vous. Il vous fournira alors toutes les informations via
req.files["fileInputName"]
dans les middlewares suivants (votre fonction est également un "middleware").