我需要生成pdf文档。关于pdf进入generateDoc
func的所有魔法,它以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);
});
});
答案 0 :(得分:2)
<强>解决方案强>:
如果您想从服务器pdf返回,则必须使用binary
param作为res.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");
});
答案 1 :(得分:1)
尝试使用res.send
(ref):
app.get('/', function(req, res) {
generateDoc().then(function(data) {
...
res.send(data);
});
});
答案 2 :(得分:0)
我用这个:
server.get('/item/:id', function (req, res, next) {
service.get(req.params.id).
done(res.json.bind(res), next);
});
调用done
方法来执行promise链。使用next
回调函数作为错误处理程序,以便将错误发送到客户端!请务必将json
方法绑定到res
对象以防止出错。