加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:25:39 所属栏目:安全 来源:网络整理
导读:我正在尝试使用NodeJS / express 4创建一个端点,该端点生成并向用户发送xlsx文件. 要创建xlsx文件,我使用的是node-xlsx库. var xlsx = require('node-xlsx');var buffer = xlsx.build([{ name: pasta,data: data}]);res.setHeader('Content-Type','applicati
我正在尝试使用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);

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读