Поскольку я хочу отслеживать загруженный прогресс в angular http Requset, я установил:
this._httpClient.post(`${this._crsUploadApiUrl}`, crsFileInput, {
reportProgress:true,
observe:'events'
}).pipe().....
, чтобы открыть прослушивание на HttpEvent и отобразить его в другой тип события, например:
private reportProgress(event: HttpEvent<any>) {
switch (event.type) {
case HttpEventType.UploadProgress:
...
break;
case HttpEventType.DownloadProgress:
...
break;
case HttpEventType.Response:
...
break;
default:
break;
}
}
Таким образом, я могу получить event.loaded и event.total для отслеживания процесса загрузки / выгрузки (в моем случае event.loaded / event.total, это довольно много времени). Он отлично работает в процессе загрузки, но в процессе загрузки. , он не смог получить событие, общее количество которого представляет размер содержимого ответа.
Кто-то [https://github.com/angular/angular/issues/1889] [1] сказал, что я должен добавить заголовок «content-length» msgstr "так что это может работать, но даже если я добавлю его в свой response.content.header, это не сработает. Я могу получить длину после загрузки тела, но не среднее время загрузки.
Вот мой Asp. net Core 2.2 API-ответ:
var responseJson = JsonConvert.SerializeObject(surfaceDtos);
var response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new ObjectContent<List<SurfaceDTO>>(surfaceDtos, new JsonMediaTypeFormatter());
//new StringContent(responseJson, System.Text.Encoding.UTF8, "application/json");
response.Content.Headers.ContentLength = responseJson.Length;
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
response.Content.Headers.Add(@"Access-Control-Allow-Headers", "Content-Length");
response.Content.Headers.Add(@"Access-Control-Expose-Headers", "Content-Length");
return new ResponseMessageResult(response);
Dev Env: Angular 8.x, Asp. Net Core 2.2
Так есть ли решение или обходной путь, по которому я мог бы отслеживать объем содержимого тела ответа в angular? Thx!