Fs.unlink不会删除该文件该文件、Fs、unlink

2023-09-03 11:01:31 作者:多少时光丶我陪你、

在我的Express服务器上,我想获取用户上传的文件并重命名它,使其与其用户名匹配。如果用户名上载了新文件,则将替换以前的文件。

代码如下:

  var newPath = 'uploads/' + user.username + '.' + (file.extension).toLowerCase();
  var basePath = path.resolve(__dirname + '../../../') + '/';

  // Copy, rename and delete temp file
  var is = fs.createReadStream(basePath + file.path);
  var os = fs.createWriteStream(basePath + newPath);

  is.pipe(os);
  is.on('end', function (error) {
    if (err) return res.send(500);
    fs.unlink(basePath + file.path);
  });
什么是fs模块 它是干什么用的

问题是fs.unlink(basePath + file.path);实际上不会删除我机器(OSX 10.9.2)上的旧文件。如何确保删除临时文件?

推荐答案

文件basePath + file.path具有由读取流is引用的链接。应推迟删除文件内容,直到关闭对该文件的所有引用。您可能希望在close事件上调用fs.unlink