基本上,我有一个使用Canvas创建的图像,它使用base64编码的数据URI。然后将此数据URI附加到电子邮件。
..., attachments:[{ fileName: "cat.jpg", contents: new Buffer(cat, 'base64') }],
电子邮件已收到,但附件不可见。$ file cat.jpg
在linux中运行会返回:
cat.jpg: ASCII text, with very long lines, with no line terminators
为什么使用ASCII?我已经提到过base64。我该如何解决这个问题?谢谢。
该变量cat
可能包含“ data:image / jpeg; base64”部分。您不应该将该位传递给Buffer
构造函数。
看来,如果您传递无效数据,new Buffer()
就不会抱怨:
var pixel = "data:image/gif;base64," + "R0lGODlhAQABAIABAP///wAAACH5" + "BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; var buffer = new Buffer(pixel, "base64"); // does not throw an error.
您甚至可以获取有效的缓冲区。缓冲区是损坏的图像(或者,它不是以图像头开始的)。
您必须自己剥离数据URI的第一部分:
var buffer = new Buffer(pixel.split("base64,")[1], "base64");