首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将从API获得的PDF直接上传到s3中的NodeJS中

将从API获得的PDF直接上传到s3中的NodeJS中
EN

Stack Overflow用户
提问于 2020-12-23 20:40:19
回答 2查看 367关注 0票数 1

我正在从第三方API中获取一个PDF报告,我想将该PDF直接上传到s3。当我这样做时,它会将PDF上传到s3,但由于某种原因,当我在s3中打开该PDF时,所有页面都是空白的。我做错什么了吗?我的代码如下。

代码语言:javascript
复制
var report = reportInfo.body;
const params = {
   Key: 'report.pdf',
   Body: report,
   Bucket: process.env.S3_BUCKET_NAME,
   ContentType: 'application/pdf',
};
s3.upload(params, (err, res) => {
   if (err) {
        console.log(err, 'err');
   }
    console.log(res, 'res');
});

我将API的响应分配给report对象。响应的一部分如下所示:

‘%PDF-1.5\n% 2872/Filter/FlateDecode>>stream\nx��\�n$�\r�����~�0�@�&1���>x�6�f����PU�U�a���mf���V�D�yHQ�փ��~$gF7�?���_/�����/��[�?��=�Ѓv���F?u��ǿS3�d��k \n1 0 obj>>�$�&����e��G���0�1Go�@M��&�jҚ�YJ3�zmhz��0<�Q��n�۶�����i�\r5w�0�1���ѦO�5��SwM=�pm�����#f�>��q^g��j�J����}O�fi�xz&f�0�ǜ�^���yj���mm{�OM/B{z��%+��H�Ɣl4

我认为这是普通的PDF,我可以直接上传到s3。上传之前我需要做些什么吗??为什么它只上传空白页?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 15:12:56

PDF文档应该以arraybuffer的形式获取。

代码语言:javascript
复制
const axios = require('axios');

const fetchAndUploadPDF = async () => {
  try {
    const pdf_document = await axios({
      method: 'get',
      url: 'url_of_the_report',
      headers: {
        accept: 'application/pdf',
      },
      responseType: 'arraybuffer',
    });
   
    await s3.upload({
      Key: 'file_name',
      Body: pdf_document.data,
      Bucket: 'bucket_name',
      ContentType: 'application/pdf',
      ACL: 'public-read',
    })
    .promise();

    console.log('PDF document successfully fetched and uploaded');
  } catch (error) {
    console.log('ERROR: ', error.stack);
    throw(error);
  }
};
票数 0
EN

Stack Overflow用户

发布于 2020-12-23 21:21:15

这完全是关于编码,在您的场景中,文件是通过POST传递给aws的多部分文件(pdf)。

  • 服务器获取具有此字节-> 0010的文件(这将不能正确解释,因为标准字节有8位)。
  • 因此,我们将它编码在基64 ->中,不管结果如何,解码它得到一个标准字节-> 0000 0010 (现在这是一个标准字节,由aws正确解释)

对于node.js编码或解码,您应该引用此文档

另一个需要完成的配置是,必须正确配置API网关设置以支持二进制数据类型。

路径: AWS控制台-> API网关->设置->多部分/表单-数据

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

https://stackoverflow.com/questions/65430678

复制
相关文章

相似问题

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