我正在使用一个具有服务器的应用程序,该服务器使用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
});
任何帮助将不胜感激。谢谢!
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
});
});
[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
});
});