我正在根据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:函数(日期){
var deferred = $ q.defer()
$ http.post('/ api / secure / generateSoldGoodsReport',日期)
.then(function(response){
deferred.resolve(response.data)
})
返回递延承诺
}
这是我的服务器端代码:
sendFileResponse =函数(res){
返回函数(err,fileDetails){
如果(错误)
{
res.json({
错误:1
讯息:err.message,
详细信息:err.errors
})
}
其他
{
res.download(fileDetails.path +'/'+ fileDetails.fileName)
}
}
}
最佳答案
最后,我最终使用了一种解决方案,其中在post
请求中生成了报告,当响应发送到客户端时,我对存储生成的报告的预定义位置提出了get
请求。我不喜欢这种解决方案,因为我使用两个请求而不是一个。
关于javascript - 如何从Express下载 Angular xlsx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29987847/