使用NodeJS将PDF上传到S3会给我一个80字节的文件



我正在尝试将最近创建的PDF上传到S3:

这是我的代码:

ejs.renderFile(path.join(__dirname, './views/', "global.ejs"), {
operatioName: recap.operation.label,
operationId: recap.operation.name,
date: recap.date,
date_ini: moment(recap.date_ini, "DDMMYYYY").locale('fr').format("DD MMMM"),
date_end: moment(recap.date_end, "DDMMYYYY").locale('fr').format("DD MMMM YYYY"),
autoConsoTotal: autoConsoTotal,
consoTotal: consoTotal,
prodTotal: prodTotal,
surplusTotal: surplusTotal,
yearAndMonthFolder: yearAndMonthFolder,
}, (err, data) => {
if (err) {
console.log(err)
} else {
// res.render('global.ejs', {
//     operatioName: operationLabel,
//     operationId: operation,
//     month: recapMonth,
//     date: RECAP_DATE,
//     autoConsoTotal: autoConsoTotal,
//     consoTotal: consoTotal,
//     prodTotal: prodTotal,
//     surplusTotal: surplusTotal,
// });
let options = {
filename: 'public/pdf/' + recap.operation.name + "/" + yearAndMonthFolder + '-BilanGlobal.pdf',
format: 'A4',
orientation: 'landscape',
type: "pdf",
paginationOffset: 1,
"renderDelay": 1000,
"base": "/home/julien/Code/customer_recap.mine/public/images/" + recap.operation.name + "/" + yearAndMonthFolder + "/",
};
pdf.create(data, options).toFile(function (err, data) {
if (err) {
console.log(err)
} else {
console.log(data);
console.log(options);
// Upload to S3
var params = {
Key: recap.operation.name + "/reports/" + yearAndMonthFolder + "-BilanGlobal.pdf",
Body: data['filename'],
Bucket: 'sunchain',
ContentType: 'application/pdf'
}
s3.putObject(params, function (err, response) {
if (err) {
console.error(err);
} else {
console.error(response);
}
});
}
});

}
});

我下载了我的文件,将其重命名为.txt,然后我可以检查它是否只有路径,而不是PDF数据:

/home/julien/Code/customer_recap/public/pdf/ACC000000/09012020_08022020-BilanGlobal.pdf

我该怎么办?我看到一些教程使用toStream而不是toFile,但我也希望它在本地生成,所以toFile对我来说很好。

如果您阅读putObject的API文档,您会发现Body可以是Buffer、Typed Array、Blob、String和ReadableStream中的一种。具体来说,它是文件的内容,而不是文件的名称

对于流,使用Body: fs.createReadStream(data['filename'])

相关内容

最新更新