我想暂时将文件保存到我的heroku文件系统,以便我可以通过电子邮件发送它们。只要电子邮件附带附件,我就不会关心文件后发生的事情。
var path = require("path");
var temp_dir = path.join(process.cwd(), 'temp/');
if (!fs.existsSync(temp_dir))
{fs.mkdirSync(temp_dir);}
request.get({
url: 'https://docs.google.com/spreadsheets/export?id='+posting.driveID+'&exportFormat=xlsx',
encoding: null, // Force Request to return the data as Buffer
headers: {
Authorization: "Bearer "+access_token
}
}, function done (err, res) {
fs.writeFile('temp/temp.xlsx', res.body, function (err) {
console.log(err);
})
});
var mailOptions={
from : "",
to : "",
subject : "new download",
generateTextFromHTML : true,
html : "<h2>Download "+posting.title+"</h2>",
attachments: [{
filePath: "temp/temp.xlsx"
}]
};
transporter.sendMail(mailOptions, function(error, resp){
if(error) {
}
else{
console.log("Message sent: " + resp.message);
}
transporter.close();
});
我听说heroku能够托管一个/ temp目录,当dyno重新充电时会擦除它自己。我试过用它但没有运气。我收到带有temp.xlsx文档的电子邮件,但它没有内容,它已损坏。想知道nodemailer是否找不到该文件,所以它只是使用该名称。
没有关于使用heroku的文件系统的明确文档,所以我想知道我的问题在哪里。否则我可能会切换到S3。
答案 0 :(得分:0)
Heroku并没有那么做。有一种方法,但它不可靠。
Heroku实例设计为只读。这样,您可以根据需要随意旋转/缩小。
Heroku的方式是:
请注意,您可以将流作为附件发送。您不需要使用实际文件。
Promotion.createIndex({ expires: 1 }, { expiresAfterSecond: 0 });