2013-05-02 99 views
4

我需要一个用户下载了文件,并得到响应结束后,将其删除:如何知道文件下载何时完成?

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

    fs.unlink(filePath); 
}); 

在上面fs.unlink的代码可以调用比年初res.download会拿完。

回答

4

使用在下载API回调:

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

谢谢,但根据文档:http://expressjs.com/api.html#res.download“处理错误,记住反应可能是部分地 - 所以检查res.headerSent“这是什么意思? – Erik 2013-05-02 10:32:08

+1

对于你的用例,它应该没关系。这更多的是向客户发送回复。这基本上是说头可能已经被发送为200以及响应的其他部分,所以在下载失败的情况下,您将无法发送HTTP错误代码或完全控制响应内容。 – 2013-05-02 11:14:44

+0

感谢您的帮助 – Erik 2013-05-02 11:27:49