Reinforces the Evaporate
library to allow Angular
-specific usage along with all the native functionality plus additional features. Available injectables:
-
Evaporate
- native lib. -
AngularEvaporateException
- dedicated exception handler. -
AngularEvaporateUpload
- file upload handler: + calculates name, url, content type for a new upload, + calculates progress percent, speed and estimated time, + saves status updates with timestamps, + saves info, warning and error messages, + bindsEvaporate
's API to the upload id, + updates$scope
onEvaporate
's callbacks, + manages dependent states (e.g. pausing, paused, resumed - only one can be true), + adds meta states (e.g. stopped is when either completed, canceled or failed). -
AngularEvaporate
- uploads queue handler (extendsEvaporate
): + manages uploads queue with an ability for every upload to be started later, + allows to specify a default config, which will be merged with every consequent upload's one, + allows to specify a custom naming function, where current instances ofAngularEvaporateUpload
andAngularEvaporate
are available. -
angular-evaporate
- directive: + lazy mode option - explicit uploading start, + same files uploading option - clean file input after every select.
- Install
```bash
npm install --save angular-evaporate
```
- Include
```html
<script src="node_modules/angular-evaporate/lib/angular-evaporate.min.js"></script>
```
- Depend
```javascript
angular.module('yourApp', ['angular-evaporate']);
```
- Inject
```javascript
yourApp.controller('yourCtrl', ['$scope', 'AngularEvaporate',
function ($scope, AngularEvaporate) {...}
]);
```
- Init
```javascript
$scope.ae = new AngularEvaporate(...);
```
`AngularEvaporate` extends [`Evaporate`](https://github.com/TTLabs/EvaporateJS), so its constructor accepts the same arguments.
- Directive
```html
<div ng-controller="yourCtrl">
<input type="file" multiple angular-evaporate="ae"/>
</div>
```
npm install && npm test
- Configure
Follow the [Evaporate](https://github.com/TTLabs/EvaporateJS)'s instructions to set up an `S3` bucket, then accordingly update `AngularEvaporate`'s constructor parameters in the `example/index.js` file and `AWS_SECRET_KEY` value in the `example/server.js` file.
- Run
```bash
npm install && npm start
```
- Check
```
http://localhost:8080/example
```
- Hint
Always use server-side validation for incoming requests to the signerUrl
, because in this simple example anyone could send you anything he wanted and just get it signed with your secret key.
Extends Evaporate
, therefore accepts the same constructor arguments and provides the same functionality, but also introduces additional features. To not interfere with possible future versions, all added object keys start from the $
symbol.
Property | Type | Usage | Description |
---|---|---|---|
$uploads |
Array |
essential | instances of AngularEvaporateUpload |
$apply |
Function |
recommended | set this to your $scope.$apply.bind($scope) to update UI when needed |
$config |
Object |
optional | default config for an upload (explicitly specified properties on a consequent call of $enqueue() or $add() will have higher priority) |
$namer |
Function |
optional | custom upload naming function (instance of AngularEvaporateUpload as an input argument, instance of AngularEvaporate as this), default one just returns a filename |
$speeder |
Function |
optional | custom speedometer function (input: current speed in bytes/second, output: string in readable format, like '1.23 MB/s') |
$url |
String |
cautious | custom url of the bucket's root directory |
$slothmode |
Boolean |
optional | (directive) lazy mode option - explicit uploading start |
$rinserepeat |
Boolean |
optional | (directive) same files uploading option - clean file input after every select |
Function | Arguments | Result | Description |
---|---|---|---|
$enqueue |
same as for Evaporate.add() |
AngularEvaporateUpload |
create an upload and append it to the queue |
$dequeue |
AngularEvaporateUpload |
Number - index in $uploads |
remove an upload from the queue |
$start |
AngularEvaporateUpload |
same as from Evaporate.add() |
start uploading an already queued upload |
$add |
same as for Evaporate.add() |
same as from Evaporate.add() |
enqueue and start uploading immediately |
Function | Arguments | Result |
---|---|---|
$startAll ,$cancelAll ,$dequeueAll |
- | - |
$pauseAll ,$resumeAll |
same as for Evaporate[fn](undefined, ...) , where fn is pause or resume |
same as from Evaporate[fn](undefined, ...) |
Property | Type | Usage | Description |
---|---|---|---|
name |
String |
optional | desired path from bucket's root directory |
contentType |
String |
optional | MIME type |
$id |
Number |
read only | result of the Evaporate.add() |
$url |
String |
read only | full url of the file when it's uploaded |
$started ,$paused ,$resumed ,$pausing ,$cancelled ,$complete ,$info ,$warn ,$error ,$progress |
Number |
optional | Date.now() of every Evaporate 's callback fired |
$stopped |
Number |
optional | value of either $complete , $cancelled or $error |
$infoMsg ,$warnMsg ,$errorMsg |
String |
optional | input parameter of the corresponding callback |
$percent |
Number |
optional | current uploading progress |
$seconds |
Number |
optional | estimated elapsed time |
$speed |
String |
optional | average upload speed |
Function | Arguments | Result |
---|---|---|
$start |
- | same as from Evaporate.add() |
$pause ,$resume ,$cancel |
same as for the corresponding Evaporate[fn](id, ...) |
same as from the corresponding Evaporate[fn](id, ...) |