2015-05-01 2 views
1

Я генерирую файл xlsx на основе некоторого пользовательского ввода в express. Информация отправляется через запрос post, и я хотел вернуть содержимое файла через res.download(...).Как загрузить xlsx в угловом из выражения

Если я это сделаю, я получаю «мусор» в поле data моего ответа ajax.

Я попытался запросить загрузку с помощью решения this, но контент по-прежнему «мусор».

Это мой угловой регулятор:

 
$scope.generateSoldGoodsReport = function() { 
     reportService.generateSoldGoodsReport({ 
      startDate: $scope.startDate, 
      endDate: $scope.endDate 
     }) 
     .then(function(report){ 
      var blob = new Blob([ report ], { type : 'application/xlsx' }); 
      $scope.url = (window.URL || window.webkitURL).createObjectURL(blob); 
     }) 
    } 

и вот моя служба:

 
generateSoldGoodsReport: function (dates) { 
    var deferred = $q.defer() 

    $http.post('/api/secure/generateSoldGoodsReport', dates) 
         .then(function(response){ 
          deferred.resolve(response.data) 
         }) 
     return deferred.promise 
    } 

и вот мой сервер код сторона:

 
sendFileResponse = function (res) { 
    return function (err, fileDetails) { 
     if (err) 
     { 
      res.json({ 
       error: 1, 
       message: err.message, 
       detailed: err.errors 
      }) 
     } 
     else 
     { 
      res.download(fileDetails.path + '/' + fileDetails.fileName) 
     } 
     } 
} 

ответ

1

В конце концов я закончил с помощью решения, где в запросе post я сгенерировал отчет и когда ответ был отправлен на c Я сделал запрос get на предопределенное место, где был создан сгенерированный отчет. Мне не нравится это решение, потому что я использую два запроса вместо одного.