在 node.js 中使用 response.download() 后删除文件?

Delete file after using response.download() in node.js?

我正在开发一个应用程序,该应用程序有一个使用 response.download() 将文件下载到客户端设备的服务器。 (我正在使用 node.js、express 和 fs)下载这些文件后,它们只占用 space,所以我尝试在下载后调用 fs.unlinksync 来摆脱他们中的。但是,没有这样的运气:我只是收到以下错误:NOENT: No such file or directory.

这里是相关的服务器端代码:

app.get("/file", function(request, response) {
  var filename = request.query.f;
  var filePath = "public/" + filename
  response.download(filePath);
//this is where I've tried putting fs.unlink
});

如有任何帮助,我们将不胜感激。谢谢!

response.download有回调功能,下载后可以删除文件如下

response.download(filePath, yourFileName, function(err) {
  if (err) {
    console.log(err); // Check error if you want
  }
  fs.unlink(yourFilePath, function(){
      console.log("File was deleted") // Callback
  });

  // fs.unlinkSync(yourFilePath) // If you don't need callback
});

res.download() 是异步的。这意味着它开始操作然后 returns 因此如果您尝试在下一行删除文件,下载操作将尚未完成。 res.download() 有一个可选的回调,它会告诉您操作何时完成,您可以在该回调中删除文件。

app.get("/file", function(request, response) {
  var filename = request.query.f;
  var filePath = "public/" + filename
  response.download(filePath, {dotfiles: "deny"}, function(err) {
     // the operation is done here          
  });
});