如何从express下载角度xlsx

时间:2015-05-01 13:35:46

标签: javascript angularjs node.js express

我根据xlsx中的一些用户输入生成express文件。该信息是通过post请求提交的,我希望通过res.download(...)返回该文件的内容。

如果我这样做,我会得到"垃圾"在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 个答案:

答案 0 :(得分:1)

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