我的服务器上有pdf的base64版本,可以在console.log中查看其值。该变量称为encodedpdf
,执行console.log(encodedpdf)
会显示pdf的base64版本。
Nodemailer允许我们发送bsae64文件作为附件,并使用缓冲区对其进行转换。下面是代码
attachments: [{
filename: 'main.pdf',
content: new Buffer(encodedpdf,'base64')
}]
但是,我不断收到此错误
TypeError:第一个参数必须是字符串,Buffer,ArrayBuffer, 数组或类似数组的对象
Edit1:
这是我的前端代码,我将pdf转换为base64并将其作为ajax发送
var element = document.getElementById('element-to-print');
html2pdf().from(element).outputPdf().then(function(pdf) {
const newpdf = btoa(pdf); //This line
$.post('./setup', newpdf, function(result) {
console.log('result', result);
});
在后端发帖请求中,我得到了大量随机字符串,因此我假设btoa(pdf)
正在将pdf转换为base64。这里可能有问题吗?
答案 0 :(得分:0)
new Buffer(String,'base64')
的使用方式是deprecated
请使用以下方式将字符串编码为base64
Buffer.from("I am a tring").toString('base64')
或使用nodemailer的内置功能发送以base64编码的字符串pdf
filename: 'your.pdf',
content: 'encodedpdfstring', //EncodedString
encoding: 'base64'