Giter Club home page Giter Club logo

angular-upload's Introduction

Angular Upload

Upload using FormData or fallback to posting to an iframe

Check the example folder to see the files that are uploaded and the express.js server that is used as the backend.

Works in all browsers, even IE6. and has no dependency on jQuery.

The code is heavily inspired by the great jQuery-File-Upload

This is a prototype so it will contain bugs, and it isn't nowhere as complete as jQuery File Upload.

Usage

Install via bower

bower install --save angular-upload

bower install --save angular-upload

Add the module to your app dependencies and include it in your page

angular.module('app', [
  'lr.upload'
]);
<script src='bower_components/angular-upload/angular-upload.min.js'></script>

and to your less/css if you want the nice button

@import "bower_components/angular-upload/src/directives/btnUpload.less"; /* or .css */

And you are good to go!

The upload service can be used this way.

<body ng-app="app" ng-controller="AppCtrl">
    <input name="myFile" type="file" />
</body>
angular.module('app').controller('AppCtrl', function ($scope, upload) {
  $scope.doUpload = function () {
    upload({
      url: '/upload',
      data: {
        anint: 123,
        aBlob: Blob([1,2,3]), // Only works in newer browsers
        aFile: $scope.myFile, // a jqLite type="file" element, upload() will extract all the files from the input and put them into the FormData object before sending.
      }
    }).then(
      function (response) {
        console.log(response.data); // will output whatever you choose to return from the server on a successful upload
      },
      function (response) {
          console.error(response); //  Will return if status code is above 200 and lower than 300, same as $http
      }
    );
  }
});

Or via the upload-button directive

<body>
  <div class="btn-upload" upload-button url="/upload" on-success="onSuccess(response)" multiple="true">
    <button class="btn btn-primary">Fileupload</button>
  </div>
</body>

Or by specifying using the upload-button with a normal config

<body>
  <div class="btn-upload" upload-button="uploadConfig" on-success="onSuccess(response)">
    <button class="btn btn-primary">Fileupload</button>
  </div>
</body>
angular.module('app').controller('AppCtrl', function ($scope) {
    // Same config that you can send into $http
    $scope.uploadConfig = {
      url: '/upload',
      data: {
        extradata: 123
        // Will contain the file or files when sent with the upload-button
      }
    };

    $scope.onSuccess = function (response) {
      console.log(response.data);
    };
}

Build it yourself!

angular-upload is built with grunt and has a express backend for testing.

Start by installing npm if you don't have it already

via homebrew or homepage (http://nodejs.org/download/)

brew install nodejs

then

npm install -g grunt-cli karma

then from within angular-upload

npm install && bower install

then you can start the testserver up with

grunt server

and you can access it through http://localhost:9001 and test the uploader

To run the tests

grunt test

or run in autotest mode

grunt autotest

And when you're done minify it

grunt package

angular-upload's People

Contributors

leon avatar slobo avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.