AngularJS — показывать значок загрузки до загрузки файла csv

#javascript #angularjs #csv #asp.net-web-api

#javascript #angularjs #csv-файл #asp.net-веб-api

Вопрос:

У меня есть приложение AngularJS, и я отправляю для загрузки файл svc на сервер следующим образом :

 public static void DownloadCSV(string csvFile, string fileName)
    {
        HttpContext.Current.Response.AppendHeader("Content-Disposition",
             "attachment; "  
             "filename="   fileName   ".csv;"  
             "creation-date="   DateTime.Now.ToString()   "; "  
             "modification-date="   DateTime.Now.ToString()   "; "  
             "read-date="   DateTime.Now.ToString());
        HttpContext.Current.Response.ContentType = "text/csv";
        HttpContext.Current.Response.Write(csvFile);
        HttpContext.Current.Response.End();
    }
 

на стороне клиента я отправляю в функцию WebAPI с именем «exportToCsv», которая использует функцию DownloadCSV, таким образом :

             var p = document.createElement('a')
            p.setAttribute('href', "myApp/exportToCsv" )
            p.click();
 

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

Как я могу это сделать?

Ответ №1:

Подготовьте html со значком загрузки (возможно, .gif), который находится по центру экрана, остальное может быть затенено;

 <div ng-show="loading" ng-include src="'loading.html'" ></div>
 

На стороне JS перед началом загрузки установите для загрузки значение true, по завершении установите для него значение false

 $scope.loading = false; // when starts
$scope.loading = false; // when finished
 

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

1. моя проблема в том, что я не знаю, когда загрузка закончится! потому что я не знаю, когда сервер завершит загрузку

2. Тогда, возможно, вам следует выполнить поиск или задать вопрос о том, как определить, когда загрузка файла завершается.