2

我需要生成 pdf 文档。所有关于 pdf 的魔法都在generateDocfunc 中,它以 Buffer 数据作为参数返回 Promise。但是 Express 不向客户端发送数据,只向客户端发送数据。我究竟做错了什么?

app.get('/', function(req, res) {
        generateDoc().then(function(data) {
            res.set({
                'Content-Type': 'application/pdf',
                'Content-Length': data.length
            });
            res.end(data);
        });
    });
4

3 回答 3

2

解决方案

如果你想从服务器 pdf 返回,你必须使用binaryres.end 的参数。

generateDoc().then(function(data) {
    res.set({
        'Content-Type': 'application/pdf',
        'Content-Length': data.length
    });
    res.end(data, 'binary');
}).fail(function (error) {
    res.end(500, "Some error");
});
于 2013-10-29T19:17:52.590 回答
1

尝试使用res.send参考):

app.get('/', function(req, res) {
    generateDoc().then(function(data) {
        ...
        res.send(data);
    });
});
于 2013-10-29T12:41:19.560 回答
0

我用这个:

server.get('/item/:id', function (req, res, next) {
    service.get(req.params.id).
    done(res.json.bind(res), next);
});

调用done方法来执行承诺链。使用next回调函数作为错误处理程序,以便将错误发送到客户端!请务必将json方法绑定到res对象以防止错误。

于 2015-04-26T15:57:11.657 回答