Angular File Upload
The file upload is an essential component to make a form that store some image kind of data. It helps in applications using image upload or in the file sharing. This file-upload component uses file.io API for uploading file and in return it provides a shareable link. Furthermore, we can send get request to shareable link to get the file but for now, our only focus is on upload section so we only use the post method.
Approach:
- Create a new angular app using following command-
ng new angular-file-upload
- Move inside the app by using cd command-
cd src/app/
- Generate new component file-upload-
ng g c file-upload/
- Open src/app folder and start editing app.component.html file.
<app-file-upload></app-file-upload>chevron_rightfilter_none - Create a service for file-upload component via command-
ng g s file-upload/
- Open src/app/file-upload folder and start editing file-upload.component.ts file.
import { Component, OnInit } from'@angular/core';import { FileUploadService } from'./file-upload.service';@Component({selector:'app-file-upload',templateUrl:'./file-upload.component.html',styleUrls: ['./file-upload.component.css']})export class FileUploadComponent implements OnInit {// Variable to store shortLink from api responseshortLink: string ="";loading: boolean =false;// Flag variablefile: File =null;// Variable to store file// Inject serviceconstructor(private fileUploadService: FileUploadService) { }ngOnInit(): void {}// On file SelectonChange(event) {this.file = event.target.files[0];}// OnClick of button UploadonUpload() {this.loading = !this.loading;console.log(this.file);this.fileUploadService.upload(this.file).subscribe((event: any) => {if(typeof(event) ==='object') {// Short link via api responsethis.shortLink = event.link;this.loading =false;// Flag variable}});}}chevron_rightfilter_none - Open src/app/file-upload/ and start editing file-upload.service.ts file.
import { Injectable } from'@angular/core';import {HttpClient} from'@angular/common/http';import {Observable} from'rxjs';@Injectable({providedIn:'root'})export class FileUploadService {// API urlconstructor(private http:HttpClient) { }// Returns an observableupload(file):Observable<any> {// Create form dataconst formData =newFormData();// Store form name as "file" with file dataformData.append("file", file, file.name);// Make http post request over api// with formData as reqreturnthis.http.post(this.baseApiUrl, formData)}}chevron_rightfilter_none - Open src/app/file-upload and start editing file-upload.component.html file.
<divclass="text-center"><inputclass="form-control"type="file"(change)="onChange($event)"><button(click)="onUpload()"class="btn btn-success">Upload</button></div><!-- Shareable short link of uoloaded file --><divclass="container text-center jumbotron"*ngIf="shortLink"><h2> Visit Here</h2><ahref="{{shortLink}}">{{shortLink}}</a></div><!--Flag variable is used here--><divclass="container"*ngIf="loading"><h3>Loading ...</h3></div>chevron_rightfilter_none - Open src/app/ and start editing app.module.ts file.
import { BrowserModule } from'@angular/platform-browser';import { NgModule } from'@angular/core';import { FileUploadComponent } from'./file-upload/file-upload.component';import { AppComponent } from'./app.component';import {HttpClientModule} from'@angular/common/http';@NgModule({declarations: [AppComponent,FileUploadComponent,],imports: [BrowserModule,HttpClientModule],providers: [],bootstrap: [AppComponent]})export class AppModule { }chevron_rightfilter_none - Now run this command to serve on localhost
ng serve
- Before file selection:

- After file selection and clicking on button:

- After loading is completed:

Output:


