0

I am using ng2-file-upload to upload the image. Everything works well but after i choose image, it'll display selected image thumbnail.

Please review my stackblitz Link

Thanks in Advance

3
  • Please update your answer with a code so we can help you in the best way Commented Dec 6, 2019 at 6:14
  • can u check link Commented Dec 6, 2019 at 6:15
  • i need to show uploaded image thumbnail Commented Dec 6, 2019 at 6:17

3 Answers 3

4

You can look out this demo may this helps you

Template file:

img element to show image preview

<img [src]="previewImg" *ngIf="previewImg"/>

Class file:

URL.createObjectURL() is a static method that creates a DOMString containing a URL representing the object given in the parameter.

bypassSecurityTrustUrl Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used in hyperlinks or <img src>.

constructor(private sanitizer: DomSanitizer) {} // inject the DomSanitizer

 previewImg: SafeUrl;
 this.uploader.onAfterAddingFile = (file) => {
      console.log('***** onAfterAddingFile ******')
      this.previewImg = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(file._file)));;
 }

Dont forget to include import { DomSanitizer, SafeUrl } from '@angular/platform-browser';

Sign up to request clarification or add additional context in comments.

Comments

2

Here is the answer when your image is ready using FileReader show the thumbnail

import { Component, OnInit } from '@angular/core';

import {FileUploader} from 'ng2-file-upload';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit  {
  url = 'https://evening-anchorage-3159.herokuapp.com/api/';
  ready = false;
  thumb="";
  uploader = new FileUploader({
    url: this.url,
    maxFileSize: 1024 * 1024 * 1
    });
  name = 'Angular 5';

  ngOnInit() {
    this.uploader.onAfterAddingFile = (file) => {
      console.log('***** onAfterAddingFile ******')
      var image_file=file._file
      const reader = new FileReader();
     reader.addEventListener('load', () => {
      console.log(reader.result)
      this.ready=true;
      this.thumb=reader.result.toString();
    });
    reader.readAsDataURL(image_file);
    }

    this.uploader.onCompleteItem =  (item:any, response:any, status:any, headers:any) => {
      console.log('ImageUpload:uploaded:', item, status, response);
    };

    this.uploader.onCompleteAll = () => {
      console.log('******* onCompleteAll *********')
    }

    this.uploader.onWhenAddingFileFailed = (item: any, filter: any, options: any) => {
      console.log('***** onWhenAddingFileFailed ********')
    }
  }
}

Your HTML looks like this

<hello name="{{ name }}"></hello>

<p>Maximun allowed file size is 1MB</p>
<img [src]="thumb" *ngIf="ready"/>
<input type="file" ng2FileSelect [uploader]="uploader">


<button (click)="uploader.uploadAll()">Upload </button>

1 Comment

Thanks you very much
0

I got the solution ,

I have tested on your https://stackblitz.com/edit/angular-ng2-file-upload , try this it is working

 export class AppComponent implements OnInit  {
      url = 'https://evening-anchorage-3159.herokuapp.com/api/';

      uploader = new FileUploader({
        url: this.url,
        maxFileSize: 1024 * 1024 * 1
        });
      name = 'Angular 5';
      //added this two variable here
      imageUrlOfLogo:string='';
      logoFileNameFile?: File;
      ngOnInit() {
        // your own code here
      }
      // added this code here
      handleLogoFileInput(file: any) {
        var item = file.item(0);
        this.logoFileNameFile = file.item(0);
        var reader = new FileReader();
        reader.onload = (event: any) => {
            this.imageUrlOfLogo = event.target.result;
        }
        reader.readAsDataURL(this.logoFileNameFile as File);

    }
}

component.html

<p>Maximun allowed file size is 1MB</p>
  <img [src]="imageUrlOfLogo" style="width:50%; height:90px;" *ngIf="logoFileNameFile">
<input type="file" ng2FileSelect [uploader]="uploader" (change)="handleLogoFileInput($event.target.files)">


<button (click)="uploader.uploadAll()">Upload </button>

1 Comment

What is the difference with the solution approved? it's exactly the same.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.