如何使用 JavaScript 从 S3 缓冲区数据中获取 HTML 模板文件?
Posted
技术标签:
【中文标题】如何使用 JavaScript 从 S3 缓冲区数据中获取 HTML 模板文件?【英文标题】:How to use JavaScript to get an HTML template file out of S3 buffer data? 【发布时间】:2020-09-16 08:40:58 【问题描述】:我将一个 html 文件加载到 S3 存储桶中。此文件旨在用作电子邮件正文的模板。
我使用了这个问题 (Read file from aws s3 bucket using node fs) 中的一个答案来帮助我从存储桶中取出文件。现在看来我有缓冲区数据需要转换回 HTML,或者它的字符串版本也可以。到目前为止我尝试过的事情都没有奏效......
以下是我获取模板的代码:
async getEmailTemplate()
const s3 = new AWS.S3( apiVersion: '2006-03-01' );
const params =
Bucket: 'myBucket',
Key: 'templates/email.html',
;
const template = await s3.getObject(params).promise();
return template;
当我记录“模板”返回的数据时,它看起来像这样......我需要像 template.body.toString('latin1') 这样的东西......
console.log src/services/tests/unit/Controller.test.js:266
AcceptRanges: 'bytes',
LastModified: 2020-05-28T19:36:23.000Z,
ContentLength: 22745,
ETag: '"1bcc123ba55b5b878109436c1274b94b"',
ContentType: 'text/html',
Metadata: ,
Body: <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3a 76 3d 22 75 72 6e 3a 73 63 68 65 6d 61 73 2d 6d 69 63 72 6f 73 6f ... 22695 more bytes>
如果有所不同,模板包含看起来像 $data.firstName 的 js 模板文字。当前,当模板在 javascript 文件中硬编码并带有 `` 包围时,电子邮件会正确填充和发送。但我正在尝试更新代码以从外部源中提取模板。
感谢您抽出宝贵时间阅读我的问题...有人对我有什么建议吗? :)
【问题讨论】:
【参考方案1】:如果您将“body”更改为“Body”,它应该可以工作,这里有一些与您的几乎相同并且工作正常的旧代码:
let Body = await s3.getObject(params).promise();
return Body.toString(encoding)
【讨论】:
天啊,就是这样!我现在有点尴尬……但谢谢你。 :-)以上是关于如何使用 JavaScript 从 S3 缓冲区数据中获取 HTML 模板文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用JavaScript将图像URL中的链接从s3转换为文件对象
如何使用 AWS RedShift Spectrum 为 S3 存储建模以进行查询
AWS Firehose中间S3存储桶和传输流依赖关系出现问题