AngularJs File uploading using Ajax, NodeJs rest Api and file-upload Java-Script file
AngularJs
Ajax
NodeJs
API
Java-Script
- By Code solution
- Jan 20th, 2021
- 0 comments
- 0
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 :)