Я хочу загрузить несколько файлов / изображений, используя angular v.7 (также угловой материал, если это помогает), и в той же форме DataData будут включены дополнительные данные, такие как заголовок или какой-либо текст.Мне удалось все это сработать, но проблема в том, что я не могу получить отчет о прогрессе для каждого файла, вместо этого отчет, который я получаю, предназначен для всех файлов вместе, как один отчет.
Как это исправить?
HTML
<input type="file" id="mediaFile" #mediaFile multiple (change)="fileAdded($event)">
JS
this.selectedFiles: Files[] = [];
// when files are selected, save them in array selectedFiles
fileAdded(event) {
if(event.target.files.length){
for(let i=0 ; i < event.target.files.length ;i++){
this.selectedFiles.push(<File>event.target.files[i]);
}
}
}
// upload data
upload() {
this.message = "";
// stop here if form is invalid
if (this.shareForm.invalid) { this.message = "Fill the required fields"; return; }
this.formD = new FormData();
this.formD.append('firstname', this.shareForm.value.firstname);
this.formD.append('lastname', this.shareForm.value.lastname);
this.formD.append('position', this.shareForm.value.position);
if(this.selectedFiles.length){
for(let i=0 ; i < this.selectedFiles.length ; i++)
this.formD.append('files[]', this.selectedFiles[i],this.selectedFiles[i].name);
}
this.loading = true;
this.http.post<any>(myUrl, this.formD,{
reportProgress: true,
observe: 'events',
withCredentials:true
})
.subscribe(
res => {
console.log(res)
this.loading = false;
},
error => {
this.message = error.message;
this.loading = false;
}
);
}
Я загрузил два файла каждый по 0,45 МБ, в консоль я получил это
{
loaded: 868352,
total: 976970,
type: 1
}
Iожидать получения отчета о прогрессе для каждого файла, а не для всех вместе