我正在尝试将最近创建的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我该怎么办?我见过一些tutos使用toStream而不是toFile,但我也希望在本地生成它,所以toFile对我有好处。
发布于 2020-09-25 16:34:50
如果您阅读了putObject的API文档,您将看到Body可以是一个缓冲区、类型化数组、Blob、String、ReadableStream。具体来说,它是文件的内容,而不是文件的名称。
对于流,请使用Body: fs.createReadStream(data['filename'])
https://stackoverflow.com/questions/64066954
复制相似问题