почему событие HttpEventType.UploadProgress выполняется только один раз в запросе на загрузку файла Angular? - PullRequest
0 голосов
/ 12 июля 2019

Я пытаюсь загрузить файлы с угловых. и я также хотел показать ход загрузки.

upload.service.ts

public uploadProductImage(obj: FormData, id: string) {
    return this._http.post(baseUrl + `/product/upload`, obj, {
      headers: {
        product_id: id,
      },
      reportProgress : true,
      observe : 'events'
    });
  }

upload.component.ts

uploadClick() {
    const fd = new FormData();

    // for(const f of this.file_url) {
    //   fd.append('image', f.file, f.file.name);
    // }
    fd.append('image', this.file_url[0].file, this.file_url[0].file.name);
    this.service.uploadProductImage(fd, this.product_id.toString())
      .subscribe(
        event => {
          if (event.type === HttpEventType.UploadProgress) {
            console.log(event.loaded, event.total);
            this.progress = Math.round(event.loaded / event.total * 100);

          } else if (event.type === HttpEventType.Response) {
            console.log(event.body);
            this.file_url = [];
          }

        },
        err => {
          console.log(err);
        }
      );
  }

Теперь загрузка изображений работает. не работает только индикатор выполнения. Я сразу получаю одно событие с HttpEventType.UploadProgress, а event.loaded и event.total оба равны.

так что прогрессбар напрямую становится 100, но для завершения запроса требуется некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...