Angular - 解析多个文件不起作用

问题描述 投票:0回答:1

我正在尝试上传来自* ngFor块的多个文件。我无法正确解析内容

我使用数组来存储文件名,如果我再次尝试选择文件,我将无法获取新的文件名

这是我的HTML代码

  <div *ngFor="let data of fileList, let i = index">

    <label class="adpLabel">{{data.fileDesc}}</label>   
    <input readonly  type="text" value={{filename[i]}}>
    <input type="file" id="{{data.fileName}}" name="{{data.lastUpdateTsFile}}"
    #selectFiles hidden accept=".xls,.xlsx" (change)="getFileInfo($event, i)">
    <button mat-button (click)="selectFiles.click()" class="browseBtn">Browse</button>    
 </div> 

这是我的component.ts文件


export class appComponent implements OnInit {


 fileType : any = [];
 filename : any = [];
 file : any = [] ;


 getFileInfo(event, i) {

this.file.push(event.target.files);
this.fileType.push(event.target.id);
this.fileUploadDate.push(event.target.name);

for (let i = 0; i < this.file.length; i++) {
  let fileName = this.file[i][0].name; 
  let id = this.fileType[i];
  let fileDate = this.fileUploadDate[i];
  let extension = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();

  if ( extension==".xls" || extension==".xlsx" ) {

    this.filename[i] = fileName; 
    this.fileType[i] = id;

    }

  }
}
  } 

我希望多次浏览该文件,这是我现在无法做到的。

angular typescript file-upload ngfor
1个回答
0
投票

将您的ts文件更改为

getFileInfo(event, i) {
   if(this.file[i]){
      this.file.splice(i,1,event.target.files);
      this.fileType.splice(i,1,event.target.id);
   }
   else{
      this.file[i]=event.target.files;
      this.fileType[i]=event.target.id;
      //this.file.push(event.target.files);
      //this.fileType.push(event.target.id);
   }
   for (let j = 0; j < this.file.length; j++) {
      let fileName:string='';
      let extension:string;
      if(event.target.files[j]){
       fileName=event.target.files[j].name;
       extension = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
      } 
      let id:any; 
      if(this.fileType[j]){
        id=this.fileType[j];
      }
      if ( extension==".xls" || extension==".xlsx" ) {
        this.filename[i] = fileName; 
        this.fileType[i] = id;
      }
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.