2016-08-31 1 views
0

J'utilise multer dans mon application nodejs pour télécharger des fichiers. Et angularjs pour la partie avant. Une fois que je clique sur télécharger l'image, sur la console je reçois une réponse indéfinie. Quelqu'un peut-il m'aider à résoudre le problème. Ici, je suis en train de coller le code. server.jsRetourne la réponse non définie de multer

var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var bodyParser = require('body-parser'); 
var path = require('path'); 
var fs = require('fs'); 
var spawn = require('child_process').spawn; 

var multer = require('multer'); 
var storage = multer.diskStorage({ 
destination:function(req,file,cb){ 
cb(null,'public/upload/'); 
}, 
filename:function(req,file,cb){ 
    cb(null,file.originalname); 
} 
}); 

var upload = multer({storage: storage}); 

app.set('views', __dirname + '/views'); 

app.use(bodyParser.json()); 
var urlencodedParser = bodyParser.urlencoded({ extended: true }); 

app.use(express.static('public')); 

app.get('/',function(req,res){ 
    res.render('index',{ title: 'Upload image' }); 
}); 

app.post('/loadImage',upload.any(),function(req, res) { 
    console.log(req.files); 
    console.log("Inside post"); 
}); 
http.listen(8080,'0.0.0.0',function(){ 
    console.log('listening on 8080'); 
}) 

Et voici mon app.js AngularJS Code

var app = angular.module('app',['ui.router','ui.bootstrap','ngAnimate']); 
$scope.img={}; 
app.controller('Ctrl',function ($scope,$http){ 
     $scope.loadImage = function(){   
    $http.post('/loadImage',$scope.img).success(function(data){ 
    console.log('Posted successfully'); 
    }).error(function(data){ 
    console.error('error'); 
    }) 
    }; 

Et mon code HTML:

<form ng-submit="loadImage()" enctype="multipart/form-data"> 
    <input type="file" name="file" multiple /> 
    <input type="submit" value="Upload Image" name="submit" /> 
</form> 

Sur la console, je reçois Indéfini et Inside post. Et sur la console du navigateur, je reçois posté avec succès Quelqu'un peut-il s'il vous plaît aidez-moi à résoudre ce problème. Au lieu de undefined Je devrais obtenir des informations sur les fichiers chargés.

Répondre

2

Ce que j'utilisé Multer pour télécharger une image

var multer = require('multer'); 

exports.loadImage = function (req, res) { 
var upload = multer({ 
     inMemory: true, 
     limits: {fileSize: 1024 * 1024 } 
    }).single('newPicture'); 

upload(req, res, function (uploadError) { 
    if (uploadError) { 
     return res.status(400).send({ message: 'errorUploadingPicture' }); 
    } 
    else { 
     var profileImage = 'No data uploaded'; 
     // this is where the photo data is 
     if (req.file && req.file.buffer) { 
      profileImage = req.file.buffer; 
     } 
     return res.json(profileImage);   
    } 
}); 

};

1

Tout cela est en supposant que vous envoyez votre fichier correct

essayer

var uploadType = upload.any() 

et changer

app.post('/loadImage',upload.any(),function(req, res) { 
    console.log(req.files); 
    console.log("Inside post"); 
}); 

à

app.post('/loadImage',uploadType,function(req, res) { 
    console.log(req.files); 
    console.log("Inside post"); 
}); 

si vous essayez d'obtenir seulement un fichier à la fois, puis à la place,

var uploadType = upload.single('file') 

app.post('/loadImage',uploadType,function(req, res) { 
    console.log(req.files); 
    console.log("Inside post"); 
});