Search code examples
angularjsfile-uploadangular-file-upload

angularjs angular-file-upload Unknown provider: $uploadProvider error


This is not a duplicate of This Question

I have included all the required files in view:

<script src="~/Scripts/angular-file-upload-master/examples/console-sham.min.js"></script>
<script src="~/Content/js/angular.js"></script>
<script src="~/Scripts/angular-file-upload-master/angular-file-upload.js"></script>

My module and controller:

var controllers = angular.module('controllers', ['ngGrid', 'ngDialog', 'angularFileUpload']);

controllers.controller('CustomProductsCtrl', 
 ['$scope', '$window', 'ngDialog', 'CommonService', 
   'CustomProductsServices', '$upload', 
 function ($scope, $window, ngDialog, CommonService, 
   CustomProductsServices, $upload){

});

But still I get this error.

Error: [$injector:unpr] Unknown provider: $uploadProvider

Please help me out.


Solution

  • It appears that you didn't close the controller declaration correctly.

    Specifically, you have: }); when you should have }]); instead. Note the missing ].


    In context, you should have:

    var controllers = angular.module('controllers', ['ngGrid', 'ngDialog', 'angularFileUpload']);
    
    controllers.controller('CustomProductsCtrl', 
     ['$scope', '$window', 'ngDialog', 'CommonService', 
       'CustomProductsServices', '$upload', 
     function ($scope, $window, ngDialog, CommonService, 
       CustomProductsServices, $upload){
    
    }]);  // Note: missing ']' added in here
    

    because we need to follow the form of declaring a controller. The controller API is terse, but pretty succint:

    $controller(constructor, locals);
    

    Which expanded to your case:

    module_name.controller( 'your_Ctrl', 
        [locals, function(){ 
            } 
        ] 
    );
    

    I added in extra spacing to call out the missing ] and to show how we're closing off elements within the declaration.