在我的 NodeJS 服务器上,我下载了一个需要嵌入电子邮件中的图像。我的存储桶不是公开的,因此仅使用该链接是行不通的,因为这不是我想要满足此问题或项目要求的解决方案。
我使用的是 HTML 电子邮件,内容如下:
<p>Embedded image: <img src="data:image/jpeg;charset=utf-8;base64,{{url}}" /></p>
所以我从S3下载
s3.getObject(
{ Bucket: "mybucket", Key: "mykey" },
function (error, data) {
if (error != null) {
console.log("Errror" + error)
} else {
console.log("Loaded " + data.ContentLength + " bytes")
然后我尝试将 data.body 转换为 UTF-8 base 64
我想的是这样的
"data:image/png;base64," + new String(encoder.encode(data.body), "UTF-8")
但它似乎不起作用,我正在努力定义编码器来做到这一点。
最佳答案
确保您在 data.Body
中获取图像数据。我认为 data.Body
已经是一个缓冲区,您可以按如下方式构造 src URL:
// Convert Body from a Buffer to a String
let base64String= data.Body.toString('base64');
let src = "data:image/jpeg;base64,"+base64String;
关于javascript - 将 S3 字节数组转换为 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57919606/