Nodejs在特定时间后删除上传的文件

时间:2017-07-29 12:53:09

标签: node.js mongodb

我正在使用Node和MongoDB构建托管服务器。工作过程看起来像这样:

  1. 用户打开页面,其中包含4个输入的表单:
    • 发件人电子邮件
    • 收件人电子邮件
    • 从发件人到收件人的消息
    • 个文件(多个)
  2. 用户正确填写所有输入并在服务器上发送POST请求。
  3. 服务器使用multer处理表单并保存文件,然后在回调中使用字段数据对象存储从表单接收的信息,并将其发送到MongoLab上的数据库。
  4. 在数据库中保存doc的回调中,服务器通过生成的链接向发件人和收件人发送邮件,从中可以下载上传的文件。
  5. 现在我想实现额外的表单输入,用户可以在服务器中删除文件时设置日期。

    因此,有两件事要做:在用户设置的时间内删除文件并删除数据库中的文档。

    你对如何实现这样的事情有一些想法吗?

1 个答案:

答案 0 :(得分:0)

要删除文件,只需使用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);
}