繁体   English   中英

如何使用角度图像上传显示图像缩略图

[英]How to display image thumbnail using angular image upload

我正在使用ng2-file-upload上传图像。 一切正常,但在我选择图像后,它会显示选定的图像缩略图。

请查看我的stackblitz 链接

提前致谢

你可以看看这个演示可能这对你有帮助

模板文件

img元素显示图像预览

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

类文件

URL.createObjectURL()是一个静态方法,它创建一个 DOMString ,其中包含表示参数中给定对象的 URL。

bypassSecurityTrustUrl绕过安全性并将给定的值信任为安全样式的 URL,即可以在超链接或<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)));;
 }

不要忘记包含import { DomSanitizer, SafeUrl } from '@angular/platform-browser';

我得到了解决方案,

我已经在你的https://stackblitz.com/edit/angular-ng2-file-upload上测试过,试试这个它是有效的

 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);

    }
}

组件.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>

这是当您的图像准备好使用FileReader显示缩略图时的答案

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 ********')
    }
  }
}

你的 HTML 看起来像这样

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM