0

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

请查看我的stackblitz 链接

提前致谢

4

3 回答 3

3

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

模板文件

img显示图像预览的元素

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

类文件

URL.createObjectURL()是一个静态方法,它创建一个 DOMString,其中包含一个 URL,该 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';

于 2019-12-06T06:25:34.923 回答
1

我得到了解决方案,

我已经在您的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>
于 2019-12-06T06:30:46.733 回答
1

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>
于 2019-12-06T06:36:55.487 回答