diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 4fe6f526e..815d84b27 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -13,6 +13,7 @@ All definitions files include a header with the author and editors, so at some p
* [AngularFire](https://www.firebase.com/docs/angular/reference.html) (by [Dénes Harmath](https://github.com/thSoft))
* [AngularJS](http://angularjs.org) (by [Diego Vilar](https://github.com/diegovilar)) ([wiki](https://github.com/borisyankov/DefinitelyTyped/wiki/AngularJS-Definitions-Usage-Notes))
* [angularLocalStorage](https://github.com/agrublev/angularLocalStorage) (by [Hiroki Horiuchi](https://github.com/horiuchi/))
+* [angular-file-upload](https://github.com/danialfarid/angular-file-upload) (by [John Reilly](https://github.com/johnnyreilly))
* [angular-spinner](https://github.com/urish/angular-spinner) (by [Marcin Biegała](https://github.com/Biegal))
* [AngularUI](http://angular-ui.github.io/) (by [Michel Salib](https://github.com/michelsalib))
* [Angular Hotkeys](https://github.com/chieffancypants/angular-hotkeys/) (by [Jason Zhao](https://github.com/jlz27))
diff --git a/angular-file-upload/angular-file-upload-tests.ts b/angular-file-upload/angular-file-upload-tests.ts
new file mode 100644
index 000000000..d59e65b4e
--- /dev/null
+++ b/angular-file-upload/angular-file-upload-tests.ts
@@ -0,0 +1,47 @@
+///
+
+module controllers {
+
+ "use strict";
+
+ var controllerId = "upload";
+
+ class Upload {
+
+ static $inject = ["$upload"];
+ constructor(
+ private $upload: ng.angularFileUpload.IUploadService
+ ) {
+ }
+
+ onFileSelect($files: File[]) {
+ //$files: an array of files selected, each file has name, size, and type.
+ var uploads: ng.IPromise[] = [];
+ for (var i = 0; i < $files.length; i++) {
+ var file = $files[i];
+ uploads.push(this.$upload.upload({
+ url: "/api/upload",
+ method: "POST",
+ data: {
+ extraData: {
+ fileName: file.name, test: "anything"
+ }
+ },
+ file: file
+ })
+ .progress((evt: any) => {
+ console.log('progress');
+ })
+ .then(success => {
+ // file is uploaded successfully
+ console.log(success.data);
+ })
+ .catch(err => {
+ console.error(err);
+ }));
+ }
+ }
+ }
+
+ angular.module("app").controller(controllerId, Upload);
+}
diff --git a/angular-file-upload/angular-file-upload.d.ts b/angular-file-upload/angular-file-upload.d.ts
new file mode 100644
index 000000000..9c3542888
--- /dev/null
+++ b/angular-file-upload/angular-file-upload.d.ts
@@ -0,0 +1,26 @@
+// Type definitions for Angular File Upload 1.6.7
+// Project: https://github.com/danialfarid/angular-file-upload
+// Definitions by: John Reilly
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module ng.angularFileUpload {
+
+ interface IUploadService {
+
+ http(config: IFileUploadConfig): IUploadPromise;
+ upload(config: IFileUploadConfig): IUploadPromise;
+ }
+
+ interface IUploadPromise extends IHttpPromise {
+
+ progress(callback: IHttpPromiseCallback): IUploadPromise;
+ }
+
+ interface IFileUploadConfig extends ng.IRequestConfig {
+
+ file: File;
+ fileName?: string;
+ }
+}
\ No newline at end of file