【发布时间】:2013-07-30 16:39:50
【问题描述】:
我正在使用节点文件系统来保存上传的图像,使用 while 循环来检查现有文件名,递增++直到有一个唯一的文件名。
代码不工作,在放置我的break; 行时出现SyntaxError: Illegal break statement 错误,以及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;
}
});
}
【问题讨论】:
标签: javascript node.js while-loop save