Как разместить запрос и скачать файл на диск с угловым режимом?

0

В угловом формате я хочу загрузить текстовый файл, содержащий csv userdata. Обычно у меня есть форма с post action, но я хочу, чтобы пользователь оставался на одной странице, но возвращал данные csv без каких-либо ссылок на страницы. Ниже приведена моя команда:

$http({
    url: "api/getUserData",
        method: "POST",
        data:{user_id:app.user_id}
    }).success(function(data, status, headers, config) {
        // data gets returned here
    }).error(function(data, status, headers, config) {
        $scope.status = status;
});

Моя проблема заключается в том, что "данные", которые возвращаются из сообщения, представляют собой файл csv. как я могу получить данные на самом деле "загрузить" на компьютер пользователя вместо того, чтобы жить в javascript? Возможно ли это?

Теги:

2 ответа

1

Вот ссылка на решение. Он использует API-интерфейс HTML5 FileSaver для сохранения файла в виде BLOB

0

Вы можете сделать это:

  1. Создайте временный якорь,
  2. кодировать, ваши данные и называть ваш файл с помощью атрибута загрузки,
  3. а затем запустите событие клика.
  4. наконец, удалите вставленный элемент.

    $http({
        url: "api/getUserData",
        method: "POST",
        data:{user_id:app.user_id}
    }).success(function(data, status, headers, config) {
    
       // data gets returned here
       var anchor = angular.element('<a/>'); 
    
       angular.element(document.body).append(anchor); // Attach to document
    
       anchor.attr({
           href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
           target: '_blank',
           download: 'myFileName.csv'
       })[0].click(); // fire a click event.
    
       anchor.remove(); // Clean it now ...
    
    }).error(function(data, status, headers, config) {
        $scope.status = status;
    });
    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню