Отправка прогресса загрузки из веб-API в клиентское приложение - PullRequest
1 голос
/ 14 февраля 2020

Я использую asp. net core web API и angular 8. Я могу загрузить файл из приложения angular в azure хранилище через веб-API. Я также получаю прогресс загрузки из API. Затем API занимает огромное время для загрузки файла в azure хранилище. Тем временем angular end показывает 100% загрузки и кажется мертвым. Как я могу показать фактический прогресс загрузки в angular end?

[HttpPost]
public ActionResult UploadFile([FromForm]FileModel model)
{
    string uri = _blobService.UploadToStorage(model.File);
    if (uri != null)
    {
        bool status = _context.SaveFileUri(model.Id, uri);
        if (status)
        {
            return Ok();
        }
        return BadRequest();
    }
    return BadRequest();
}

Это мое действие API. _blobService.UploadToStorage () загружает файл в хранилище BLOB-объектов.

uploadFile(item: File){
    const formData = new FormData();
    formData.append('file', item);
    formData.append('id', this.productId);
    const req = new HttpRequest('POST', this.apiUrl , formData, {
        reportProgress: true,
        withCredentials: true
    });
    this.http.request(req).subscribe((event: HttpEvent<any>) => {
        if (event.type === HttpEventType.UploadProgress) {
            this.percent = (event.loaded / event.total!) * 100;
        }
    });
}

И это вызов API от angular end.

...