0

In einer mit AngularJs erstellten Webanwendung gibt es eine Seite, auf der der Benutzer eine Datei hochladen kann. Aber ich habe ein Problem. Dies ist die Fabrik, die den Upload macht:

angular.module('app').factory('FileUpload', ['$http', function($http) { 
    this.uploadFileToUrl = function(file, uploadUrl){ 
    var fd = new FormData(); 
    fd.append('file', file); 
    $http.post(uploadUrl, fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }) 
     .success(function(){ 
     }) 
     .error(function(){ 
     }); 
    } 
}]); 

Wenn ich versuche, eine Datei zu, Konsole gibt mir diese Fehlermeldung:

"Error: [$injector:undef] Provider 'FileUpload' must return a value from $get factory method. 

Dies ist die Funktion im Controller:

$scope.uploadFile = function(){ 
    var userId = $stateParams.userId; 
    var fileType = $stateParams.fileType; 
    var file = $scope.myFile; 
    console.log('file is '); 
    console.dir(file); 
    var uploadUrl = 'my_url'; 
    FileUpload.uploadFileToUrl(file, uploadUrl); 
}; 

Antwort

0

Das von Ihnen verwendete Muster sollte service nicht factory verwenden. Mit Fabrik möchten Sie die new 'd up-Instanz zurückgeben, mit Service stellen Sie nur die Funktion zur Verfügung.

angular.module('app').service('FileUpload',...