#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); }