在 node.js 中使用 response.download() 后删除文件?
Delete file after using response.download() in node.js?
我正在开发一个应用程序,该应用程序有一个使用 response.download()
将文件下载到客户端设备的服务器。 (我正在使用 node.js、express 和 fs)下载这些文件后,它们只占用 space,所以我尝试在下载后调用 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
});
如有任何帮助,我们将不胜感激。谢谢!
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 was deleted") // Callback
});
// fs.unlinkSync(yourFilePath) // If you don't need callback
});
res.download()
是异步的。这意味着它开始操作然后 returns 因此如果您尝试在下一行删除文件,下载操作将尚未完成。 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()
将文件下载到客户端设备的服务器。 (我正在使用 node.js、express 和 fs)下载这些文件后,它们只占用 space,所以我尝试在下载后调用 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
});
如有任何帮助,我们将不胜感激。谢谢!
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 was deleted") // Callback
});
// fs.unlinkSync(yourFilePath) // If you don't need callback
});
res.download()
是异步的。这意味着它开始操作然后 returns 因此如果您尝试在下一行删除文件,下载操作将尚未完成。 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
});
});