var UploadController = function ($scope, fileReader) {
  $scope.getTextFile = function () {
    $scope.progress = 0;
    fileReader.readAsText($scope.file, $scope).then(function(result) {
      $scope.text = result;
    });
  };
};

app.directive("readText", function() {
  return {
    link: function($scope,el) {
      el.bind("change", function(e) {
        $scope.file = (e.srcElement || e.target).files[0];
        $scope.getTextFile();
      });
    }
  };
});
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.18/angular.min.js"></script>
    <script> var app = angular.module('plunker', []); </script>
    <script src="upload.js"></script>
    <script src="app.js"></script>
  </head>

  <div ng-controller="UploadController">
    <form>
      <input type="file" read-text="onFileSelect($files)">
    </form>
    <p>{{text}}</p>
  </div>

</html>
/* Put your css in here */

(function (module) {
     
    var fileReader = function ($q) {
 
    var onLoad = function(reader, deferred, scope) {
      return function () {
        scope.$apply(function () {
          deferred.resolve(reader.result);
        });
      };
    };
 
    var onError = function (reader, deferred, scope) {
      return function () {
        scope.$apply(function () {
          deferred.reject(reader.result);
        });
      };
    };

    var getReader = function(deferred, scope) {
      var reader = new FileReader();
      reader.onload = onLoad(reader, deferred, scope);
      reader.onerror = onError(reader, deferred, scope);
      return reader;
    };
 
    var readAsText = function (file, scope) {
      var deferred = $q.defer();
    
      var reader = getReader(deferred, scope);         
      reader.readAsText(file);
             
      return deferred.promise;
    };
 
    return {
      readAsText: readAsText 
    };
  };
 
  module.factory("fileReader", ["$q", fileReader]);
 
}(angular.module("plunker")));