Comment télécharger un xlsx en mode angular depuis express

Je génère un fichier xlsx basé sur une entrée utilisateur dans express . L’information est soumise via une demande de post et je voulais renvoyer le contenu du fichier via res.download(...) .

Si je le fais, j’obtiens des “ordures” dans le champ de data de ma réponse ajax .

J’ai essayé d’inviter un téléchargement en utilisant cette solution, mais le contenu est toujours “ordures”.

Voici mon contrôleur angular:

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

et voici mon service:

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

     $ http.post ('/ api / secure / generateSoldGoodsReport', dates)
                         .then (fonction (réponse) {
                             deferred.resolve (response.data)
                         })
         retour différé.promise
     }

et voici mon code côté serveur:

 sendFileResponse = function (res) {
     fonction de retour (err, fileDetails) {
         si (err)
         {
              res.json ({
                  erreur: 1,
                  message: err.message,
                  détaillé: err.errors
              })
          }
          autre
          {
              res.download (fileDetails.path + '/' + fileDetails.fileName)
          }
       }
  }

Finalement, j’ai fini par utiliser une solution dans laquelle, dans une demande de post j’ai généré le rapport et lorsque la réponse a été envoyée au client, j’ai fait une demande d’ get à un emplacement prédéfini où le rapport généré était stocké. Je n’aime pas cette solution car j’utilise deux requêtes au lieu d’une.