当前位置:  开发笔记 > 编程语言 > 正文

NodeJS/Express4端点生成损坏的xlsx文件

如何解决《NodeJS/Express4端点生成损坏的xlsx文件》经验,为你挑选了1个好方法。

我正在尝试使用NodeJS/express 4创建一个端点,该端点生成并向用户发送xlsx文件.

要创建xlsx文件,我正在使用该node-xlsx库.

var xlsx = require('node-xlsx');
var buffer = xlsx.build([{
  name: pasta,
  data: data
}]);
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.setHeader("Content-Disposition", "attachment; filename=" + pasta + ".xlsx");
res.write(buffer, 'binary');
return res.end();

我试图通过Angular应用程序下载此文件.

$http.post('https://endpoint/v1/' + folderName + '/reportExcel', {
    responseType: 'arraybuffer'
  })
  .success(function(response) {
      var blob = new Blob([response], {
        type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
      });
      var objectUrl = URL.createObjectURL(blob);
      $window.open(objectUrl);

但是,正在下载的文件已损坏,因此无法打开它.



1> 小智..:

可能是因为你正在使用connect-livereload插件?该插件似乎导致损坏的二进制文件被传输.我遇到过同样的问题,并在启动connect-livereload插件时添加'ignore'解决了这个问题.

app.use(require('connect-livereload')({
    ignore:['.xls', '.xlsx']
}));

有关详细信息,请参阅此帖:https://github.com/intesso/connect-livereload/issues/39

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有