Advertisement
Guest User

Upload V3

a guest
Mar 9th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // V1: Mensur
  2. public uploadImage(): Promise<void> {
  3.     // File for Upload
  4.     const targetPath: string = this.pathForImage(this.lastImage);
  5.     const reader = new FileReader();
  6.     return new Promise<void>((resolve, reject): void => {
  7.         this.file.resolveLocalFilesystemUrl(targetPath)
  8.             .then(entry => (<FileEntry>entry).file(file => {
  9.                 reader.onloadend = (): void => {
  10.                     const imgBlob = new Blob([reader.result], { type: file.type });
  11.                     this.uploadXHR(imgBlob).then(
  12.                         () => resolve(),
  13.                         () => reject()
  14.                     );
  15.                 };
  16.                 reader.readAsArrayBuffer(file);
  17.             }))
  18.             .catch(err => console.warn("'AvatarProvider.uploadImage()'", err));
  19.     });
  20. }
  21.  
  22. // V2: Better promise
  23. public uploadImage(): Promise<void> {
  24.     const targetPath: string = this.pathForImage(this.lastImage);
  25.     const reader: FileReader = new FileReader();
  26.  
  27.     let file: File = null;
  28.  
  29.     return this.file
  30.         .resolveLocalFileSystemUrl(targetPath)
  31.         .then((entry: FileEntry) => new Promise<void>((resolve) => {
  32.             entry.file((loadedFile: File): void => {
  33.                 file = loadedFile;
  34.  
  35.                 reader.readAsArrayBuffer(file);
  36.                 reader.onloadend = resolve;
  37.             }
  38.         ))
  39.         .then(() => new Blob([reader.result, { type: loadedFile.type }]))
  40.         .then((imgBlob: Blob) => this.uploadXHR(imgBlob))
  41.         .catch((error: Error) => console.warn("AvatarProvider.uploadImage()", 'Error while uploading image', err));
  42. }
  43.  
  44. // V3: Async / await (best)
  45. public async uploadImage(): Promise<void> {
  46.     try {
  47.         const targetPath: string = this.pathForImage(this.lastImage);
  48.         const reader: FileReader = new FileReader();
  49.  
  50.         const entry: FileEntry = await this.file.resolveLocalFilesystemUrl(targetPath);
  51.         const loadedFile: File = await new Promise<File>((resolve) => {
  52.             entry.file((loadedFile: File): void => {
  53.                 file = loadedFile;
  54.  
  55.                 reader.readAsArrayBuffer(file);
  56.                 reader.onloadend = resolve;
  57.             }
  58.         });
  59.  
  60.         const imgBlob: Blob = new Blob([reader.result, { type: loadedFile.type }]);
  61.  
  62.         return await this.uploadXHR(imgBlob);
  63.     } catch(error) {
  64.         console.warn("AvatarProvider.uploadImage()", 'Error while uploading image', err);
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement