0

В веб-приложении, создаваемом с помощью AngularJs, есть страница, где пользователь может загрузить файл. Но у меня есть некоторые проблемы. Это завод, который делает загрузку:

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

Если я пытаюсь загрузить файл, консоль дает мне эту ошибку:

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

Это функция в контроллере:

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

ответ

0

Образец, который вы используете, должен использовать service не factory. С фабрикой вы хотите вернуть экземпляр new 'd up, с сервисом вы просто предоставляете функцию.

angular.module('app').service('FileUpload',... 
Смежные вопросы