如何从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,因为我使用了两个请求而不是一个。