使用nodejs下载文件后删除文件
Posted
技术标签:
【中文标题】使用nodejs下载文件后删除文件【英文标题】:Delete a file after download it using nodejs 【发布时间】:2021-08-13 16:15:51 【问题描述】:我正在使用 Node.js,我需要在用户下载文件后删除它。有没有办法在管道进程结束后调用回调方法,或者为此目的的任何事件?
exports.downloadZipFile = function(req, res)
var fileName = req.params['fileName'];
res.attachment(fileName);
fs.createReadStream(fileName).pipe(res);
//delete file after download
;
【问题讨论】:
fs.unlink(fileName, callBack);
@Qix 我已经用谷歌搜索过了,这就是我发布问题的原因。
Qix 是人们离开堆栈溢出的一个例子
作为记录,我没有通过谷歌搜索找到答案,但我确实找到了这个对我有帮助的问题。也许如果我已经知道答案,我就会知道要谷歌搜索什么。感谢您询问拉格纳
Qix,我用谷歌搜索得到了这个问题。我想我们只是被零除。
【参考方案1】:
您可以在res
的finish
事件上调用fs.unlink()
。
或者你可以使用文件流的end
事件:
var file = fs.createReadStream(fileName);
file.on('end', function()
fs.unlink(fileName, function()
// file deleted
);
);
file.pipe(res);
【讨论】:
有没有等效的方法来用 Koa 做到这一点?ctx.body = fs.createReadStream(filename)
是我之前在做的,但我想用你的方法删除'end'上的文件以上是关于使用nodejs下载文件后删除文件的主要内容,如果未能解决你的问题,请参考以下文章
nodejs multer diskstorage在保存到磁盘后删除文件