【发布时间】:2014-06-07 03:41:29
【问题描述】:
在我的 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.unlink(basePath + file.path); 实际上并没有删除我机器上的旧文件(OSX 10.9.2)。如何确保删除临时文件?
【问题讨论】:
-
只使用一个
fs.rename调用更简单,不是吗? -
@PeterLyons 尝试过,但遇到了同样的问题。
-
您是否尝试向
fs.unlink()添加回调以查看是否设置了err?此外,您可能希望为文件可读流侦听“关闭”而不是“结束”,因为这表明支持 fd 实际上已关闭。