如何从express下载xlsx

我正在生成一个xlsx文件基于一些用户input的express 。 信息通过post请求提交,我想通过res.download(...)返回文件的内容。

如果我这样做,我在我的ajax响应的data字段中“垃圾”。

我试图用这个解决scheme提示下载,但内容仍然是“垃圾”。

这是我的angular度控制器:

 $ scope.generateSoldGoodsReport = function(){
         reportService.generateSoldGoodsReport({
             startDate:$ scope.startDate,
             endDate:$ scope.endDate
         })
         。然后(函数(报告){
             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',date)
                         。然后(function(响应){
                             deferred.resolve(response.data)
                         })
        返回deferred.promise
     }

这里是我的服务器端代码:

 sendFileResponse =函数(res){
    返回函数(err,fileDetails){
        如果(err)
         {
              res.json({
                 错误:1,
                 消息:err.message,
                 详细:err.errors
              })
          }
         其他
          {
              res.download(fileDetails.path +'/'+ fileDetails.fileName)
          }
       }
  }

最后,我最终使用了一个解决scheme,在后一个请求中,我生成了报告,当响应发送到客户端时,我向get生成的报告的预定义位置发出了get请求。 我不喜欢这个解决scheme,因为我使用了两个请求而不是一个。