我有一个经过 base64 编码的 PDF 文件,想将其附加到电子邮件中。 当我用以下代码附加它时,发送的电子邮件附加了损坏的 PDF:
email.addFile({
filename: 'my-file.pdf',
content: aBase64EncodedPDF,
contentType: 'application/pdf',
});
您将使用上述代码添加一个 base64 字符串作为附件,这意味着您需要保存附件并在另一端对其进行解码。 我想你可能真的想这样做:
email.addFile({
filename: 'my-file.pdf',
content: new Buffer(aBase64EncodedPDF, 'base64'),
contentType: 'application/pdf',
});
@deaks-kt 感谢您的贡献!
@danielflippance是否解决了您的问题?
谢谢(你的)信息。 该解决方案会使使用的内存量增加一倍吗? IE:我现在有一个 base64 字符串和一个包含相同信息的缓冲区。 如果是这样,这将显着增加我们服务器上的内存使用量,因为 PDF 非常大,因此不适用于我们的情况。 我将研究我们是否可以在渲染到 base64 之前检索缓冲区。
我怀疑它会接近两倍。 每 4 个 Base64 得到 3 个字节,这减少了 25%,但我预计数组会有一些开销。 如果您真的遇到困难并且必须使用 base64,那么我建议您调查 pull request #219 并查看https://github.com/form-data/form-data (这是该库通过请求使用的内容)看看你是否可以流式传输 base64 解码,或者甚至可以指定表单数据已经在 form.append 中编码
最有用的评论
您将使用上述代码添加一个 base64 字符串作为附件,这意味着您需要保存附件并在另一端对其进行解码。 我想你可能真的想这样做: