2015-10-01 2 views
0

J'ai fait quelques recherches sur ce sujet et je ne sais toujours pas ce qui se passe ici. Le google a un résultat de recherche non pertinent ou le code/message d'erreur donné.Multer jetant une erreur bizarre lors du téléchargement de fichier via le téléchargement ng-fichier

Voici mon contrôleur angulaire, basé simplement sur le code api et des exemples de téléchargement de fichiers ng sur le téléchargement de fichiers ng.

var app = angular.module('fileUpload', ['ngFileUpload']); 

app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) { 
    console.log("Hey ho from controller"); 
    $scope.uploadFiles = function (files) { 
     $scope.files = files; 
     if (files && files.length) { 
      console.log(files); 
      Upload.upload({ 
       url: 'api/data/check', 
       data: { 
        files: files 
       } 
      }).then(function (response) { 
       $timeout(function() { 
        $scope.result = response.data; 
        console.log(response); 
       }); 
      }, function (response) { 
       console.log(response); 
       if (response.status > 0) { 
        $scope.errorMsg = response.status + ': ' + response.data; 
        console.log(response); 
       } 
      }, function (evt) { 
       console.log(response); 
       $scope.progress = 
        Math.min(100, parseInt(100.0 * evt.loaded/evt.total)); 
      }); 
     } 
    }; 
}]); 

C'est le code que j'ai écrit du côté serveur.

app.post('/api/data/check', merchants_offer_upload.single('files'), function (req, res, next) { 
    console.log(req.body.merchantid); 
    console.log("we are here"); 
    // res.json({status: 0, picarray: array_pic}); 
}); 

J'ai essayé cela aussi, je veux que ces vers téléchargés en une seule fois, donc je voulais utiliser la fonction de téléchargement de tableau

app.post('/api/data/check', merchants_offer_upload.array('files'), function (req, res, next) { 
    console.log(req.body.merchantid); 
    console.log("we are here"); 
    // res.json({status: 0, picarray: array_pic}); 
}); 

Ceci est le code de stockage complet - serveur

var merchant_storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 

    console.log("Multer Part 1 Bitch!") 
    merchant_id = req.params.merchantid; 
    console.log(merchant_id); 
    console.log('merchant_id : ', merchant_id); 
    mkdirp(__dirname + '/images/offers/' + merchant_id, function (err) { 
     console.log(__dirname); 
     if (err) console.error(err) 
     cb(null, __dirname + '/images/offers/' + merchant_id); 
     console.log("heeeee 1"); 
    }); 


    }, 
    filename: function (req, file, cb) { 
    console.log("Multer Part 2"); 
    var f = Date.now()+'_'+file.originalname; 
    cb(null,Date.now() + f) 
    array_pic.push(f); 
    console.log(f); 
    console.log(file.originalname); 

    } 
}) 

var merchants_offer_upload = multer({ storage: merchant_storage }); 

Maintenant la mauvaise partie. Les erreurs!

Des erreurs sont générées lorsque je sélectionne les fichiers à télécharger.

Error: Unexpected field 
    at makeError (C:\nodefiles\new\node_modules\multer\lib\make-error.js:12:13) 
    at wrappedFileFilter (C:\nodefiles\new\node_modules\multer\index.js:39:19) 
    at Busboy.<anonymous> (C:\nodefiles\new\node_modules\multer\lib\make-middleware.js:109:7) 
    at Busboy.emit (events.js:118:17) 
    at Busboy.emit (C:\nodefiles\new\node_modules\multer\node_modules\busboy\lib\main.js:31:35) 
    at PartStream.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\lib\types\multipart.js:209:13) 
    at PartStream.emit (events.js:107:17) 
    at HeaderParser.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\Dicer.js:51:16) 
    at HeaderParser.emit (events.js:107:17) 
    at HeaderParser._finish (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:70:8) 
    at SBMH.<anonymous> (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:42:12) 
    at SBMH.emit (events.js:118:17) 
    at SBMH._sbmh_feed (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\node_modules\streamsearch\lib\sbmh.js:159:14) 
    at SBMH.push (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\node_modules\streamsearch\lib\sbmh.js:56:14) 
    at HeaderParser.push (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:48:19) 
    at Dicer._oninfo (C:\nodefiles\new\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\Dicer.js:198:25) 

Une chose que je dois ajouter, pas une seule partie de console.log est imprimé sur la console - ce qui est du côté du serveur, ceux du contrôleur de l'extrémité avant est correctement imprimé.

Ceci est message d'erreur que je reçois comme réponse du côté du contrôleur

Hey ho from controller 
controller6.js:12 [File] 
angular.js:10661 POST http://localhost:1339/api/data/check 500 (Internal Server Error)(anonymous function) @ angular.js:10661sendReq @ angular.js:10480status.$get.serverRequest @ angular.js:10187processQueue @ angular.js:14634(anonymous function) @ angular.js:14650parent.$get.Scope.$eval @ angular.js:15916parent.$get.Scope.$digest @ angular.js:15727parent.$get.Scope.$apply @ angular.js:16024(anonymous function) @ angular.js:17791completeOutstandingRequest @ angular.js:5490(anonymous function) @ angular.js:5762 
2angular.js:12416 ReferenceError: response is not defined 
    at controller6.js:30 
    at angular.js:14716 
    at Scope.parent.$get.Scope.$eval (angular.js:15916) 
    at Scope.parent.$get.Scope.$digest (angular.js:15727) 
    at Scope.parent.$get.Scope.$apply (angular.js:16024) 
    at done (angular.js:10511) 
    at completeRequest (angular.js:10683) 
    at XMLHttpRequest.requestLoaded (angular.js:10624)(anonymous function) @ angular.js:12416ident.$get @ angular.js:9203(anonymous function) @ angular.js:14718parent.$get.Scope.$eval @ angular.js:15916parent.$get.Scope.$digest @ angular.js:15727parent.$get.Scope.$apply @ angular.js:16024done @ angular.js:10511completeRequest @ angular.js:10683requestLoaded @ angular.js:10624 
controller6.js:24 Object {data: "Error: Unexpected field<br> &nbsp; &nbsp;at makeEr…s\busboy\node_modules\dicer\lib\Dicer.js:198:25)↵", status: 500, config: Object, statusText: "Internal Server Error"} 
controller6.js:27 Object {data: "Error: Unexpected field<br> &nbsp; &nbsp;at makeEr…s\busboy\node_modules\dicer\lib\Dicer.js:198:25)↵", status: 500, config: Object, statusText: "Internal Server Error"} 

Répondre