首页 > 解决方案 > angular4多文件上传第二组文件清空

问题描述

我是角度新手

我正在使用多个文件上传

      <input #fileInput type="file"  multiple="true" ngModel class="form-control" name="image[]" accept="image/png, image/jpeg, image/gif" id="image" 
  (click)="fileInput.value = null;" (change)="onChange($event)">

为了显示图像预览,我使用了下面的代码

<div *ngFor="let item of filelist; let i = index; " >
            <img  *ngIf="item != '' " id='img-upload' [src]="item"> 
 </div>

图像改变事件网络

我这样tmp_files :File[] = [] ;声明

   onChange(event:any) {   


  //this.fupload = event.srcElement.files;  // not working in firefox
  this.fupload = event.target.files; 
// to get the files in array

  this.tmp_files.push(event.target.files);

  //console.log(event.target.files.length+' <> '+this.dind.length);
  this.urlval = event.target.files[0].name;




  for(let i=0; i< event.target.files.length; i++ ) {

    if (event.target.files && event.target.files[i]) {
      var reader = new FileReader();
      reader.onload = (event:any) => {
        this.url = event.target.result;
        this.filelist.push(this.url);

      }
      reader.readAsDataURL(event.target.files[i]);
    }
  }        

}

我选择3个文件

像这样的图像显示 this.tmp_files 变量的控制台日志

我再次选择 2 个文件

在此处输入图像描述

控制台日志为:

在此处输入图像描述

在 tmp_files 变量中,Fileset 0 被清除,并且在数组中最后选择的两个文件仅可用。

我不知道这是为什么。(文件集 0 - 长度为 0。文件集 1 的长度为 2)。但在预览中我有 5 个字段。请帮我

标签: angular

解决方案


1)您第二次只获得 2 个文件的原因是文件控件在您再次进行选择时重置其集合。如果您想要多个文件,则需要一次选择它们。否则获取文件并将它们添加到您的本地集合并再次添加(您现在正确地执行此操作)

2) 您在预览中看到 5 个文件的原因是,每次您选择这些文件时,都会将它们的详细信息添加到本地集合“this.filelist”中。此集合在文件选择中保留(需要手动重置)。

您的工作正常,只需将添加到本地集合中的文件进行处理即可。您的代码中的任何地方都没有问题(直到现在)


推荐阅读