我正在使用节点文件系统来保存上传的图像,使用 while 循环来检查现有文件名,递增++直到有一个唯一的文件名。
代码不起作用,SyntaxError: Illegal break statement
我的行放置错误break;
,以及 while 循环从未正确读取fs.exists()
循环中的函数。
我在逻辑上在这里做错了什么吗?有没有更简单的方法来确保fs.writeFile()
不会覆盖现有文件?
代码:
var fileExist = true;
var fileName = req.files.files[0].name.substr(0, req.files.files[0].name.lastIndexOf('.')) || req.files.files[0].name;
var fileType = req.files.files[0].name.split('.').pop();
var fileNumber = 1;
while (fileExist) {
fileNumber_str = fileNumber.toString();
var current = fileName + fileNumber_str + '.' + fileType;
fs.exists( __dirname + "/uploads/" + current, function(exists){
if (exists) {
fileNumber++;
}
if (!exists) {
var newPath = __dirname + "/uploads/" + current;
fs.writeFile(newPath, data, function (err) {
res.send('saved');
});
break;
}
});
}