angular - 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个文件
我再次选择 2 个文件
控制台日志为:
在 tmp_files 变量中,Fileset 0 被清除,并且在数组中最后选择的两个文件仅可用。
我不知道这是为什么。(文件集 0 - 长度为 0。文件集 1 的长度为 2)。但在预览中我有 5 个字段。请帮我
解决方案
1)您第二次只获得 2 个文件的原因是文件控件在您再次进行选择时重置其集合。如果您想要多个文件,则需要一次选择它们。否则获取文件并将它们添加到您的本地集合并再次添加(您现在正确地执行此操作)
2) 您在预览中看到 5 个文件的原因是,每次您选择这些文件时,都会将它们的详细信息添加到本地集合“this.filelist”中。此集合在文件选择中保留(需要手动重置)。
您的工作正常,只需将添加到本地集合中的文件进行处理即可。您的代码中的任何地方都没有问题(直到现在)