J'utilise Multer pour analyser une forme multipart dans un environnement clé de voûte et et pas en mesure d'accéder aux données de req.body et req.file dans mon contrôleur de routeMulter ne peuplait req.body et req.file
routes/index.js
var keystone = require('keystone'),
middleware = require('./middleware');
var bodyParser = require('body-parser');
//multi-part form parser for FTP api
var multer = require('multer');
var storage = multer.memoryStorage();
var upload = multer({storage: storage});
exports = module.exports = function(app) {
app.use(bodyParser.json({limit: '10mb'}));
app.use(bodyParser.urlencoded({limit: '10mb', extended: true}));
app.post('/upload_api', upload.single('formFile'), routes.api.uploadFTP);
};
routes/api/uploadFTP.js
var keystone = require('keystone');
var ftpMod = require('ftp');
var fs = require('fs');
exports = module.exports = function(req, res) {
console.log("req.body is ");
console.log(req.body);
console.log("req.file is ");
console.log(req.file);
res.send("console.log() outputted to screen");
}
publique/test-Upload.html
<html>
<body>
<form name="sampleForm" enctype="multipart/form-data" action="/upload_api" method="post">
<p>Method</p>
<input type="text" name="method"><br>
<p>Options</p>
<input type="text" name="options"><br>
<p>File</p>
<input type="file" name="formFile"><br><br>
<input type="submit" value="Click to Send">
</form>
</body>
</html>
La réponse que je reçois de nodejs est
>req.body is
{}
req.file is
undefined
J'attends req.body
contenir {méthode: « someText »} et req.file
être peuplée
Im confus sur la suppression de la 'upload.single ('FormFile')' middleware de index.js Je suis également confus par la fonction upload (req, res, function (err) {}): dans le fichier uploadFTP.js. Où est passé upload.single()? Tout cela semble très différent de la documentation fournie par express/multer – user258667
L'exemple de code de la documentation est var multer = require ('multer'); var storage = multer.memoryStorage(); var upload = multer ({stockage: stockage}); App.post ('/ profile', upload.array(), fonction (req, res, next) { // req.body contient les champs de texte }); – user258667
Ceci est le code de travail de mon application. Vous pouvez conserver Middleware si vous le souhaitez. J'ai appelé upload.Single() de la méthode réelle –