首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传PDF到S3与NodeJS给我一个80字节的文件

上传PDF到S3与NodeJS给我一个80字节的文件
EN

Stack Overflow用户
提问于 2020-09-25 15:19:23
回答 1查看 223关注 0票数 0

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

这是我的代码:

代码语言:javascript
复制
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数据:

代码语言:javascript
复制
/home/julien/Code/customer_recap/public/pdf/ACC000000/09012020_08022020-BilanGlobal.pdf

我该怎么办?我见过一些tutos使用toStream而不是toFile,但我也希望在本地生成它,所以toFile对我有好处。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-25 16:34:50

如果您阅读了putObject的API文档,您将看到Body可以是一个缓冲区、类型化数组、Blob、String、ReadableStream。具体来说,它是文件的内容,而不是文件的名称。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64066954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档