2017-02-06 2 views
1

J'essaie d'utiliser ng-file-upload pour télécharger plusieurs fichiers en même temps à mon action de contrôleur de gravier. Cependant, je n'arrive pas à comprendre comment mettre en attente les fichiers téléchargés dans l'action.comment utiliser ng-file-upload avec grails 2.5.3

Voici mon code JS:

app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) { 
    $scope.uploadFiles = function (files) { 
     $scope.files = files; 
     if (files && files.length) { 
      Upload.upload({ 
       url: 'http://localhost:8080/classifydemo/request/create', 
       data: { 
        files: files 
       } 
      }).then(function (response) { 
       $timeout(function() { 
        $scope.result = response.data; 
       }); 
      }, function (response) { 
       if (response.status > 0) { 
        $scope.errorMsg = response.status + ': ' + response.data; 
       } 
      }, function (evt) { 
       $scope.progress = 
        Math.min(100, parseInt(100.0 * evt.loaded/evt.total)); 
      }); 
     } 
    }; 
}]); 

Et mon action Grails est ci-dessous:

class RequestController { 

    def create() { 
     request.headerNames.each{ 
      println it 
     } 
     println params 
     println request.getFile("file") 
     render "test" 
    } 

} 

Le code ci-dessus échoue sur request.getFile.

Question

Comment puis-je obtenir une prise des fichiers qui sont téléchargés au contrôleur afin que je puisse les traiter dans une boucle.

Répondre

0

Puisque vous avez la possibilité de plusieurs fichiers, vous devez utiliser:

request.fileNames.each { 
    MultipartFile file = request.getFile(it) 
    // do whatever you want with the file 
} 
+0

Je viens essayé et il semble que le code ne pénètre même pas que la fermeture. En outre, le type de contenu de la demande est juste nul. – Anthony