Как отловить загруженный файл UploadProgress HttpEvent в Angular? - PullRequest
0 голосов
/ 13 января 2019

Я использую этот код Angular для загрузки файлов на сервер. Все работает нормально, файлы загружаются, но я не получаю отчеты о прогрессе.

import { HttpEvent, HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class DataService {
  private url = 'http://mydomain/uploadfile',

  constructor(private http: HttpClient) {}

  sendFile(file: File): Observable<any> {
    const formData: FormData = new FormData();
    formData.append('file', file, file.name);

    const customHeaders = new HttpHeaders({
      'Authorization': 'Bearer' + localStorage.getItem('token'),
      'Accepted-Encoding': 'application/json'
    });

    const customOptions = {
      headers: customHeaders,
      reportProgress: true
    };

    return this.http.post(this.url, formData, customOptions)
      .pipe(
        map( (event: HttpEvent<any>) => {
          // in here need to catch the event.UploadProgress event,
          // but isn't happening
          return event;
        }),
        tap(message => this.showProgress(message)),
        last(),
        catchError(this.handleError));
  }
}

Что не так с этим кодом? Почему я не могу поймать событие event.UploadProgress? Есть идеи?

...