Как получить длину содержимого заголовка ответа при наблюдении за событиями в запросе HttpClient.post()? — Угловой Http-клиент

#angular #events #http-headers #progress-bar

#угловой #Мероприятия #http-заголовки #индикатор выполнения

Вопрос:

 generateReport(report: any) {
        return this.http.post(`Test`, JSON.stringify(report), 
       {headers:this.appGlobals.httpDocumentDownloadOptions.headers, 
       responseType: 'arraybuffer',  observe: 'events', reportProgress: true})
       .pipe(map(event => event),catchError(this.appGlobals.handleError),);
}
  

Комментарии:

1. Вы можете попробовать, response.headers.get('content-length') где ответ — это то, что вы получаете, когда подписываетесь или передаете свой http.post() метод

2. в нем говорится, что ** Не удается прочитать свойство ‘get’ неопределенного **

3. ответ, который я получаю, выглядит как {тип: 1, загружено: 176, всего: 176}

4. Вам нужно передать observe: response вместо observe: 'events' , а затем resp.headers.get('header-name') измените название заголовка на любой заголовок, который вы хотите получить.

5. Я наблюдаю за событиями, чтобы узнать ход выполнения файла для отображения индикатора выполнения, если я наблюдаю за ответом, я не смогу получить event.loaded size

Ответ №1:

Если вы видите угловой документ для HttpProgressEvent, вы можете получить количество загруженных байт, используя loaded свойство события. Вы не можете получить заголовки ответа при наблюдении, events потому что то, что вы наблюдаете, является HttpProgressEvent , а не HttpResponse.

Комментарии:

1. да, без наблюдения httpProgressEvent я не могу получить небольшое количество файлов, загружаемых в течение всего процесса загрузки файла

2. Я предполагаю, что в настоящее время нет способа получить заголовки при наблюдении events и, самое главное, не имеет смысла получать заголовки ответа при наблюдении events .

3. для отображения индикатора выполнения мне нужен общий размер файла и небольшие части загружаемого файла, чтобы я мог сравнить оба и показать процент загруженного файла.

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

5. если (response.type === HttpEventType. DownloadProgress) { this.percent = Math.round(100 * response.loaded / response.total); console.log(«процент——«, this.percent); }