typescript 文件列表.item不是函数?

mgdq6dx1  于 2023-01-14  发布在  TypeScript
关注(0)|答案(1)|浏览(137)

每当我试图访问一个FileList变量的item属性时,我被告知它不是一个函数?为什么会这样?
首先,我从file类型的输入中获取所有文件,然后将它们推送到FileList类型的数组中,该数组成功地保存了所选文件:

files: any = [];

onImageSelect(files: any = FileList) {
    for(let i = 0; i < files.length; i++) {
      this.files.push(files.item(i));
    }
    console.log(this.files)
  }

上面的onImageSelect方法发生在文件输入更改时:

<input type="file" accept="image/*" multiple #fileUploader id="fileUploader" (change)="onImageSelect($any($event.target).files)">

现在我有了一个FileList类型的数组,其中包含了使用file类型的输入选择的所有文件,我想将每个文件上传到Firebase -这是通过将上述FileList数组中的每个文件推送到一个同样为FileList类型的NEW数组来完成的:

filesUploaded: any = [];

uploadImages(selectedFiles: any = this.files) {
    for (let i = 0; i < selectedFiles.length; i++) {
      this.filesUploaded.push(selectedFiles.item(i));
    }
  }

单击时调用上面的uploadImages方法:

<button mat-raised-button color="secondary" (click)="uploadImages()">Upload</button>

但是一旦调用,我得到一个类型错误:“错误类型错误:selectedFiles.item不是函数”,为什么会是?

anauzrmj

anauzrmj1#

请尝试使用以下命令:

onImageSelect(files: any): void {
    this.selectedFiles = files.target.files;
    const formData: FormData = new FormData();
    for (let i = 0; i < this.selectedFiles.length; i++) {
      formData.append('file' + (i + 1), this.selectedFiles[i]);
    }
    console.log(formData);
  }

相关问题