CodeSolution

Please wait...

AngularJs File uploading using Ajax, NodeJs rest Api and file-upload Java-Script file

@AngularJs  @ NodeJs  @ file  @ upload  @ Ajax  @ rest  @ API  @ Java-Script  

AngularJS is a very powerful JavaScript FrameworkFile uploading using Ajax, NodeJs rest Api and file-upload Java-Script file.

Setup

Project Structure 

Project Name                          // Project directory

   - node_modules                     // Npm Package

   -  package-lock.json.              // package-lock.json

   -  package.json                    // package.json

   -  server.js                       // server.js file

   -  Public                          // Html View and Angualrjs file

        - index.html                  // will hold the main template for our app

        - app.js                      // our angular code

        - angular-ui-router.min.js    // angular-ui-router.min JS

        - angular.min.js              // angularjs File

        - ng-file-upload-shim.min.js  // ng-file-upload-shim.min JS

        - ng-file-upload.min.js       // ng-file-upload.min File

        - services.js                 // Services JS File

           - pages                       // view directory

              - header.html             // about page code 

               - home.html               // home page code

              - about.html              // about page code

              - contact.html            //  about page code

Create Index.html and add code

<!DOCTYPE html>

<html>

<head>

<title>File Upload</title>

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css">

<style type="text/css">

.container{

padding: 0px;

width: 100%;

}

</style>

<script type="text/javascript" src="angularjs/angular.min.js""></script>

<script type="text/javascript" src="angularjs/angular-ui-router.min.js"></script> 

<script src="angularjs/ng-file-upload-shim.min.js"></script>

 <script src="angularjs/ng-file-upload.min.js"></script>

<script src="js/app.js"></script>

<script src="angularjs/services.js"></script>

<script src="js/controllers/home.js"></script>

<script src="js/controllers/about.js"></script>

<script src="js/controllers/contact.js"></script>

</head>

<body ng-app="UiRouting">

    <div ui-view></div>

</body>

</html>

Create app.js and add code

var app = angular.module('UiRouting', ['ui.router', 'ngFileUpload', 'APIModule', 'home.controllers', 'About.controllers', 'Contact.controllers']);

app.config(function($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise('/header/home');

    $stateProvider

  .state('header', {

    url: '/header',

    abstract: true,

    templateUrl: 'pages/header.html'

    })

.state('header.home', {

    url: '/home',

    views: {

      'container': {

        templateUrl: 'pages/home.html',

        controller: 'HomeCtrl'

      }

    }

})

.state('header.about', {

    url: '/about',

    views: {

      'container': {

        templateUrl: 'pages/about.html',

        controller: 'AboutCtrl'

      }

    }

})

.state('header.contact', {

    url: '/contact',

    views: {

      'container': {

        templateUrl: 'pages/contact.html',

        controller: 'ContactCtrl'

      }

    }

});

});

Create Home.html and add code

<form>

  <div class="form-group">

    <label for="exampleFormControlFile1">Multipal file Upload Examples</label>

    <input type="file" class="form-control-file" ype="file" ngf-select="multipalupload($files)"  accept="image/*" multiple>

  </div>

</form>

<div class="container" ng-repeat="imagedata in ImagePath track by $index">

<img src="http://localhost:9000/{{imagedata}}" class="rounded mx-auto d-block" style="width: 100%;padding: 20px">

</div>

<form>

  <div class="form-group">

    <label for="exampleFormControlFile1">Single file Upload Examples</label>

    <input type="file" class="form-control-file" ype="file" ngf-select="uploadPhoto($files)"   accept="image/*">

  </div>

</form>

<div class="container" ng-if="image">

<img src="http://localhost:9000/{{image}}" class="rounded mx-auto d-block"  style="width: 100%">

</div>

Create home.js and add code

angular.module('home.controllers', [])

.controller('HomeCtrl', function($scope, APIService, Upload) {

  $scope.ImagePath = [];

    $scope.multipalupload = function(file) {

        file.upload = Upload.upload({

            url:  'http://localhost:9000/api/uploadPhotos',

            arrayKey: '',

            data: {

                file: file

            }

        });


        file.upload.then(function(response) {

            console.log(response);

            if (response.data) {

                angular.forEach(response.data, function(item) {

                console.log(item);

                    $scope.ImagePath.push(item.path);

                    console.log($scope.ImagePath);

                });

            }

        }, function(response) {

            if (response.status > 0)

                $scope.errorMsg = response.status + ': ' + response.data;

        }, function(evt) {

            // Math.min is to fix IE which reports 200% sometimes

            file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));

        });

    };

    $scope.image = '';

    $scope.uploadPhoto = function(file) {

        file.upload = Upload.upload({

            url:  'http://localhost:9000/api/uploadPhoto',

            data: {

                file: file[0]

            }

        });


        file.upload.then(function(response) {

            console.log(response);

            $scope.image = response.data.path;

        }, function(response) {

            if (response.status > 0)

                $scope.errorMsg = response.status + ': ' + response.data;

        }, function(evt) {

            // Math.min is to fix IE which reports 200% sometimes

            file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));

        });

    };

})

Create Other HTML pages and JS file like home about contact etc..

 

Github Link : 

https://github.com/Sudarshan101/FileuploadNodejsAngularjs

See demo : 

https://www.youtube.com/watch?v=yQ_iYzFqg9A

Thank you :)

Comments 0

Reply