2017-02-06 4 views
1

Ich versuche mit ng-Datei-Upload mehrere Dateien gleichzeitig auf meine Controller-Aktion hochzuladen. Ich kann jedoch nicht herausfinden, wie man die Dateien, die in die Aktion hochgeladen werden, erreichen kann.Wie benutze ich ng-Datei-Upload mit Grails 2.5.3

Hier ist meine JS-Code:

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)); 
      }); 
     } 
    }; 
}]); 

Und meine Grails Aktion ist unten:

class RequestController { 

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

} 

Der obige Code auf request.getFile ausfällt.

Frage

Wie kann ich einen Halt der Dateien erhalten, die an den Controller geladen werden, so dass ich sie in einer Schleife verarbeiten kann.

Antwort

0

Da Sie die Möglichkeit, mehrere Dateien haben, sollten Sie verwenden:

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

Ich habe gerade versucht, dass und wie es scheint, dass der Code nicht einmal, dass die Schließung ein. Außerdem ist der Inhaltstyp der Anfrage einfach null. – Anthony