我使用 Node 文件系统保存上传的图像,使用 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;
}
});
}
最佳答案
你是想跳出fs.exists的回调,确实不合法。使用 fs.existsSync 可能更容易
例如:
while (fileExist) {
fileNumber_str = fileNumber.toString();
var current = fileName + fileNumber_str + '.' + fileType;
if (fs.existsSync(__dirname + "/uploads/" + current)) {
fileNumber++;
} else {
var newPath = __dirname + "/uploads/" + current;
fs.writeFile(newPath, data, function (err) {
res.send('saved');
});
break;
}
}
关于javascript - Node.js 文件系统 - 保存唯一的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17948624/