我正在使用一个名为Node Jasper的库。 Pdf也通过动态传递的参数生成。我想将该文件保存在项目文件夹中。有人可以帮助我实现这一目标吗?以下是片段
exports.jasperdemo = (req, res) => {
console.log(req.body)
var report = {
report: 'hw',
data: {
parameter1: req.body.parameter1,
parameter2: req.body.parameter2
},
}
var pdf = jasper.pdf(report);
res.set({
'Content-type': 'application/pdf',
'Content-Length': pdf.length
});
fs.writeFile("Test.pdf",res.body);
res.send(pdf)
}
答案 0 :(得分:1)
您可以在fs.writeFile()
函数中将目录添加到文件名之前:
exports.jasperdemo = (req, res) => {
console.log(req.body)
var report = {
report: 'hw',
data: {
parameter1: req.body.parameter1,
parameter2: req.body.parameter2
},
}
var pdf = jasper.pdf(report);
res.set({
'Content-type': 'application/pdf',
'Content-Length': pdf.length
});
// Added your change here
fs.writeFile("./your/directory/Test.pdf",res.body);
res.send(pdf)
}
答案 1 :(得分:1)
使用new Buffer(pdf,"binary")
创建一个二进制数据缓冲区,然后将其传递给res.body而不是res.body来查找随附的代码
exports.jasperdemo = (req, res, next) => {
var report = {
report: 'hw',
data: {
parameter1: req.body.parameter1,
parameter2: req.body.parameter2
}
}
var pdf = jasper.pdf(report);
res.set({
'Content-type': 'application/pdf',
'Content-Length': pdf.length
});
fs.writeFile("./reports/Test.pdf",new Buffer(pdf, 'binary'), ()=>{
console.log('successful');
});
res.send(pdf)
}