2013-05-02 97 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