我正在使用 Node 和 MongoDB 构建托管服务器。工作过程如下所示:
- 用户打开包含 4 个输入的表单的页面:
- 发件人电子邮件
- 收件人电子邮件
- 从发送者到接收者的消息
- 文件(多个)
- 用户正确填写所有输入并向服务器发送 POST 请求。
- 服务器使用 multer 处理表单并保存文件,然后在回调中准备存储从表单接收到的信息的具有字段数据的对象并将其发送到 MongoLab 上的数据库。
- 在将文档保存到数据库的回调中,服务器会向发送者和接收者发送邮件,并附上生成的链接,他们可以从该链接下载上传的文件。
现在我想在表单中实现额外的输入,用户可以在其中设置应从服务器删除其文件的日期。
所以要做两件事:按用户设定的时间删除文件和删除数据库中的文档。
您对如何实现这样的事情有一些想法吗?
最佳答案
要删除文件,只需使用fs.unlink()
const fs = require('fs');
const deleteFile = (file) => {
fs.unlink("path/to/file/folder/"+file, (err) => {
if (err) throw err;
}
}
你想要创建一个setTimeout()
,但是你需要找到在用户提供的日期之前还剩下多少时间,你应该这样做:
const time_remaining = (date_provided) => new Date(date_provided) - new Date();
然后只需使用setTimeout()
:
let timeOuts = []; // We create an array of timeouts in case we want to cancel one later
// I assume you use express and body-parser
app.post('/upload', (req, res) => {
const timer = setTimeout( () => deleteFile(req.body.file), time_remaining (req.body.date));
timeOuts.push(timer);
}
关于node.js - Nodejs 在特定时间后删除上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389515/