attilan

Blob to base64

Oct 6th, 2020
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { HttpClient } from '@angular/common/http';
  2. import { Observable, Observer } from 'rxjs';
  3. import { switchMap, take } from 'rxjs/operators';
  4.  
  5. export class BlobToBase64Converter {
  6.   convertBlobToBase64(http: HttpClient, fileUrl: string): Observable<string> {
  7.     return http.get(fileUrl, { responseType: 'blob' }).pipe(
  8.       take(1),
  9.       switchMap((blob: Blob) => this.converter(blob).pipe(take(1)))
  10.     );
  11.   }
  12.  
  13.   private converter(data: Blob): Observable<string> {
  14.     return Observable.create((observer: Observer<string>) => {
  15.       const reader = new FileReader();
  16.       reader.readAsDataURL(data);
  17.       reader.onloadend = () => {
  18.         observer.next(reader.result as string);
  19.         observer.complete();
  20.       };
  21.       reader.onerror = () => {
  22.         observer.error('Error while converting to base64');
  23.         observer.complete();
  24.       };
  25.     });
  26.   }
  27. }
  28.  
Add Comment
Please, Sign In to add comment