I am generating an xlsx
file based on some user input in express
. The info is submitted via a post
request and I wanted to return the content of the file via res.download(...)
.
If I do that I get "garbage" in the data
field of my ajax
response.
I tried to prompt a download using this solution, but the content is still "garbage".
This is my angular controller:
$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 ); }) }
and here is my service:
generateSoldGoodsReport: function (dates) { var deferred = $q.defer() $http.post('/api/secure/generateSoldGoodsReport', dates) .then(function(response){ deferred.resolve(response.data) }) return deferred.promise }
and here is my server side code:
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) } } }