如何在使用ng2-file-upload选择图像后立即显示图像?

时间:2017-01-05 09:20:32

标签: angular

我正在使用angular2构建网站并使用ng2-file-upload库ng2-file-upload 我想在选择后立即在我的网站上显示图像。这个库怎么可能?

2 个答案:

答案 0 :(得分:2)

您可以收听onAfterAddingFile事件并为本地blob创建网址:

this.uploader = new FileUploader({url: '/your/url' });
this.uploader.onAfterAddingFile = (fileItem) => {
    let url = (window.URL) ? window.URL.createObjectURL(fileItem._file) : (window as any).webkitURL.createObjectURL(fileItem._file);
    this.localImageUrl = url
}

现在你必须使用的img src存储在this.localImageUrl中。问题是,当您尝试在DOM中使用它时,Angular会将其标记为不安全。要解决此问题,您需要导入DomSanitizer

import { DomSanitizer } from '@angular/platform-browser';

并将其注入组件的构造函数中:

export class MyComponent {
    (...)
    constructor(public sanitizer:DomSanitizer) {
    (...)
    }

最后,在模板中添加img的地方,使用清理程序来信任该网址:

<img [src]="sanitizer.bypassSecurityTrustUrl(localImageUrl)">

答案 1 :(得分:0)

遵循以下简单解决方案

import { DomSanitizer} from '@angular/platform-browser';
    ...
    public previewPath: any;
    ....
    constructor(private sanitizer: DomSanitizer) {
       this.uploader.onAfterAddingFile = (fileItem) => {
          this.previewPath = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(fileItem._file)));
        }
    }

以html

 <img [src]="previewPath " alt="Avatar" class="contribution-image">