在我们的应用程序中,使用一个API中的“ excel-export”模块创建了一个excel。
var file = fs.createWriteStream('abc.xlsx');
var options1 = { method: 'GET',
url: <api url>,
encoding: 'binary'
};
request(options1, function (error, response, body) {
if (error) throw new Error(error);
response.pipe(file);
var avi = JSON.stringify(file);
var buff = new Buffer.from(avi).toString('base64');
var options = { method: 'POST',
url: 'https://api.sendgrid.com/v3/mail/send',
headers:
{ 'content-type': 'application/json',
'authorization': <####> },
body:
{ personalizations:
[ { to: <####>,
subject: <#####> ],
from: <####>,
content: <####>,
attachments: [ { content: buff, filename: 'abc.xlsx' } ] },
json: true };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});
我正在另一个API中使用该API,该Excel文件必须作为附件发送到邮件中。我们正在使用Sendgrid v3 REST API进行邮件发送。
left join i3.analisys a3 WITH a3.something = :someValue
正在发送邮件,但是当我尝试打开Excel时,它给出了文件已损坏的错误。我要去哪里错了?
答案 0 :(得分:0)
我解决了这个问题。诀窍在于使用encoding:null而不是encoding:'binary'。也代替
response.pipe(file);
var avi = JSON.stringify(file);
var buff = new Buffer.from(avi).toString('base64');
我用过
var buff = new Buffer.from(body).toString('base64');