angularjs CDN https://angularjs.org/ Version 1.8.2 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js
//index.html <!DOCTYPE html> <html > <head> <title>AngularJS Preview before Upload</title> <meta charset="utf-8"> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script> </head> <body ng-app="angularupload" ng-controller="uploader"> <div class="container"> <h1 class="page-header text-center">AngularJS Preview before Upload</h1> <div class="row"> <div class="col-md-3"> <h3 class="text-center">Upload File</h3> <hr> <label>File:</label> <input type="file" file-input="files"> </div> <div class="col-md-9"> <div ng-show="filepreview"> <img ng-src="{{filepreview}}" height="300px" width="300px"> <h4>Filename: {{ name }}</h4> <h4>Size: {{ size }}</h4> </div> </div> </div> </div> <script> var app = angular.module('angularupload', []); app.directive('fileInput', ['$parse', function ($parse) { return { $scope: { fileinput: "=", filepreview: "=" }, link: function($scope, element, attributes) { element.bind("change", function(changeEvent) { $scope.fileinput = changeEvent.target.files[0]; var reader = new FileReader(); reader.onload = function(loadEvent) { $scope.$apply(function() { $scope.filepreview = loadEvent.target.result; }); } reader.readAsDataURL($scope.fileinput); $scope.name = $scope.fileinput.name; $scope.size = $scope.fileinput.size; }); } } }]); app.controller('uploader', function($scope, $http){ }); </script> </body> </html>