在远程Angular应用程序中下载Excel文件损坏

我有一段代码可以下载excel报告,这些报告完全可以在我的本地web服务器上正常工作,但是在部署时,excel文件总是被损坏,代码示例如下:

AngularJS:

$scope.getExcelFile = function(dateFrom, dateTo){ API.getExcelFile(dateFrom, dateTo).then(function(data){ var blob = { data: [data.data], filename: 'ExcelFile.xlsx', options: { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' } } FileSaver.saveAs(blob); }); } 

API(JS):

 this.getExcelFile= function(dateFrom, dateTo){ var promise = $http({ url: '/some/api/endpoint/' + dateFrom + '/' + dateTo, method:'GET', responseType: 'arraybuffer' }) return promise; 

PHP的API – 注意我不能提供所有的代码,这是创build的方式,但我认为它可以安全地说,这是与服务器/响应问题,而不是文件build设,因为它在本地工作正常..

  $excelFileName = "ExcelFile.xlsx"; $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $excelFileName . '"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output'); // Output to browser 

有一件事我注意到不同的是,远程响应在所有的excel二进制文件之前有一个空行,当我在chrome inspector中查看时,在本地它没有这个。

任何有关如何解决这个问题的build议将不胜感激

好吧,让人感到尴尬的是,这是在API顶部的configuration脚本closures之后出现的一个杂散的新行的结果。 因此,响应中的空白换行符。

理想情况下,您不应该在PHP脚本底部使用?>,这是一个遗留脚本。

(脸掌)