我正在使用 Meteor-CollectionFS 上传 pdf 文件。它使用 S3 存储它,这一切正常。我的问题与如何截取文件并将其转换为 base64String 相关,以便我可以使用 Mandrill 将此 pdf 的副本通过电子邮件发送给用户并将其存储以备将来使用。
以下是我到目前为止的代码:
Template.dropzone.events({
'dropped #dropzone': function(e) {
FS.Utility.eachFile(e, function(file) {
Meteor.call('testEmailUpload', file.toString('base64'));
var newFile = new FS.File(file);
Images.insert(newFile, function (error, fileObj) {
if (error) {
toastr.error("Upload failed... please try again.");
} else {
toastr.success('Upload succeeded!');
}
});
});
}
});
发送电子邮件的方法调用。
'testEmailUpload': function (base64String){
Mandrill.messages.send({
message: {
subject: 'Test Email',
from_email: "xxxxxxxx",
from_name: "xxxxxxxx",
to: [{ email: "xxxxxxxx"}],
text: "TestEmail Upload Files",
headers: {"Reply-To": "xxxxxxxx" },
attachments: [{
type: "application/pdf",
name: "TestPDF.pdf",
content: base64String
}]
}
},
function(result) {
}, function(e) {
// Mandrill returns the error as an object with name and message keys
console.log('A mandrill error occurred: ' + e.name + ' - ' + e.message);
// A mandrill error occurred: Unknown_Subaccount - No subaccount exists with the id 'customer-123'
});
}
这适用于上传没有问题。但是,我不知道应该调用什么来获取实际的 base64string 以传递给该方法。现在正在发送电子邮件,但从未正确创建 pdf。
任何帮助是极大的赞赏。