import {Component, ElementRef, ViewChild} from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { acceptedMimeTypes = [ 'image/gif', 'image/jpeg', 'image/png' ]; @ViewChild('fileInput') fileInput: ElementRef; fileDataUri = ''; errorMsg = ''; previewFile() { const file = this.fileInput.nativeElement.files[0]; if (file && this.validateFile(file)) { const reader = new FileReader(); reader.readAsDataURL(this.fileInput.nativeElement.files[0]); reader.onload = () => { this.fileDataUri = reader.result; } } else { this.errorMsg = 'File must be jpg, png, or gif and cannot be exceed 500 KB in size' } } uploadFile(event: Event) { event.preventDefault(); // get only the base64 file if (this.fileDataUri.length > 0) { const base64File = this.fileDataUri.split(',')[1]; // TODO: send to server console.log(base64File); } } validateFile(file) { return this.acceptedMimeTypes.includes(file.type) && file.size < 500000; } }