ngx-upload-steroids
Version:
Angular 2+ File Uploader
73 lines (63 loc) • 1.91 kB
text/typescript
import { Component, EventEmitter } from '@angular/core';
import { UploadOutput, UploadInput, UploadFile, humanizeBytes } from '../../../';
interface FormData {
concurrency: number;
autoUpload: boolean;
verbose: boolean;
}
export class AppHomeComponent {
formData: FormData;
files: UploadFile[];
uploadInput: EventEmitter<UploadInput>;
humanizeBytes: Function;
dragOver: boolean;
constructor() {
this.formData = {
concurrency: 0,
autoUpload: false,
verbose: true
};
this.files = [];
this.uploadInput = new EventEmitter<UploadInput>();
this.humanizeBytes = humanizeBytes;
}
onUploadOutput(output: UploadOutput): void {
console.log(output);
if (output.type === 'allAddedToQueue') {
this.files = [output.file];
} else if (output.type === 'addedToQueue') {
this.files.push(output.file);
} else if (output.type === 'uploading') {
const index = this.files.findIndex(file => file.id === output.file.id);
this.files[index] = output.file;
} else if (output.type === 'removed') {
this.files = this.files.filter((file: UploadFile) => file !== output.file);
} else if (output.type === 'dragOver') {
this.dragOver = true;
} else if (output.type === 'dragOut') {
this.dragOver = false;
} else if (output.type === 'drop') {
this.dragOver = false;
}
}
startUpload(): void {
const event: UploadInput = {
type: 'uploadAll',
url: 'http://localhost:4900/upload',
method: 'POST',
data: { foo: 'bar' },
concurrency: this.formData.concurrency
}
this.uploadInput.emit(event);
}
cancelUpload(id: string): void {
this.uploadInput.emit({ type: 'cancel', id: id });
}
clearAll(): void {
this.uploadInput.emit({ type: 'clearAll' });
}
}