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

问题描述 投票:0回答:2

我正在使用一个具有服务器的应用程序,该服务器使用response.download()将文件下载到客户端的设备。 (我正在使用node.js,express和fs)下载这些文件后,它们仅占用空间,因此我尝试在下载后调用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
});

任何帮助将不胜感激。谢谢!

node.js express server download fs
2个回答
0
投票

res.download()是异步的。这意味着它将开始操作,然后返回,因此,如果您尝试在下一行删除文件,则下载操作尚未完成。 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          
  });
});

0
投票

[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 Deleted") // Callback
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.