每当我试图访问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数组中的每个文件推入一个NEW数组来完成的,该数组也是FileList类型的:
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>
然而,一旦调用,我得到一个类型错误:" error TypeError: selectedFiles。Item不是一个函数,为什么会这样呢?试着用这个代替:
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);
}