我根据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) } } }
答案 0 :(得分:1)
最后,我最终使用了一个解决方案,在post
请求中我生成了报告,当响应发送到客户端时,我向生成的预定义位置发出get
请求报告已存储。我不喜欢这个解决方案,因为我使用了两个请求而不是一个。