【发布时间】:2017-09-09 19:04:51
【问题描述】:
我正在尝试在node.js 中生成后立即删除 pdf。生成的 pdf 作为电子邮件附件发送,上传到dropbox,然后从本地文件系统中删除。但是当我尝试删除它时,它不会删除它,也不会发送电子邮件。 pdf 是使用html-pdf 创建的。这是我的代码:
if (result) {
var filename = user.number+ ".pdf";
var path = './public/files/'+filename ;
var options = { filename: path, format: 'Legal', orientation: 'portrait', directory: './public/files/',type: "pdf" };
html = result;
pdf.create(html, options).toFile(function(err, res) {
if (err) return console.log(err);
console.log(res);
});
var dbx = new dropbox({ accessToken: mytoken });
fs.readFile( path,function (err, contents) {
if (err) {
console.log('Error: ', err);
}
dbx.filesUpload({ path: "/"+filename ,contents: contents })
.then(function (response) {
console.log("done")
console.log(response);
})
.catch(function (err) {
console.log(err);
});
});
var mailOptions = {
from: 'xyz', // sender address
to: user.email, // list of receivers
subject: 'Confirmation received', // Subject line
attachments : [{
filename: filename,
path : path
}]
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});
fs.unlinkSync(path); // even tried fs.unlink , does not delete file
// fs.unlinkSync(someother file); this one works
}
所以当我执行fs.unlink' orfs.unlinkSync` 时,如果文件已经存在,它可以工作,但路径中生成的文件不会被删除。
【问题讨论】:
-
您需要等到您发送完电子邮件。
-
console.log 是你最好的朋友,如果你打印一些东西而不是
unlinkSync(path),你会注意到你的Message sent [...]在你尝试删除文件之后出现
标签: node.js pdf dropbox fs unlink