如何知道文件下载何时完成?

时间:2013-05-02 05:39:27

标签: node.js express download

我需要让用户下载他的文件并在响应完成后将其删除:

app.get('/download/:file', function (req, res) {
   var filePath = '/files/' + req.param('file');
   res.download(file);

   fs.unlink(filePath); 
});

在上面的代码中,fs.unlink可以比res.download更早地调用。

2 个答案:

答案 0 :(得分:9)

在下载api中使用回调:

res.download(filePath, req.param('file'), function(err){
  //CHECK FOR ERROR
  fs.unlink(filePath);
});

答案 1 :(得分:3)

return res.download(filename, 'output.ext', () => {
   fs.unlinkSync(filename);
});

对我来说,通过使用unlinkSync避免了错误“ TypeError [ERR_INVALID_CALLBACK]:回调必须是函数”。

感谢@JonathanWiepert提供了此答案的想法。