nodejs - 表示发送pdf作为响应的下载

时间:2015-12-09 09:48:47

标签: node.js pdf express

您好我正在尝试设置节点服务器,以便在用户向其发送请求时向用户发送pdf文件。

问题是它没有启动下载,但我在控制台中看到了这一点。 enter image description here

这是我的代码

app.post('/', function(req, res, next) {

mypdf.toPdf(__dirname + "/my-invoice.pdf", function (err, data) {
  var stream = fs.createReadStream(data.stream.path);
  stream.pipe(res);

 stream.on('data', function(data) {
    res.write(data);
  });

  stream.on('end', function() {
    res.end();
  });
});

});

我也尝试过使用一些不同的标题设置

app.use(function(req, res, next) {
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.setHeader("Content-Type", "application/force-download");
    res.setHeader("Content-Transfer-Encoding", "binary");
    res.setHeader("Content-Disposition","attachment;      filename=\"test.pdf\"");
    next();
});

1 个答案:

答案 0 :(得分:0)

我在错误的地方寻找答案,我只需要以正确的方式处理来自服务器的文件。

    $http.get('https://dam-pdf.herokuapp.com/15-0123', {responseType:'arraybuffer'}).success(function(response){
        var file = new Blob([response], {type: 'application/pdf'});
        var fileURL = URL.createObjectURL(file);
        $scope.content = $sce.trustAsResourceUrl(fileURL);
        window.open($scope.content)
    })