gpt4 book ai didi

javascript - Node.js 文件系统 - 保存唯一的文件名

转载 作者:行者123 更新时间:2023-11-30 08:50:58 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com