我正在使用Node.js和fs
模块。上传文件时,我想将其重命名为原始名称并记录更新后的名称(原始名称)。我重命名上传文件的代码工作正常。但我在打印fileName
时遇到问题。
let fileName = "";
form.on('file', function(field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name), function(err) {
if (err != null) {
console.log(err);
}
fileName = path.join(form.uploadDir, file.name);
});
});
let name = fileName;
console.log("NAME " + name);
我应该采取哪些不同的方式?
编辑:这不是重复,因为问题确实是关于fs.rename
,而不是如何绕过异步属性
答案 0 :(得分:1)
借助@pawel的见解,我用承诺来解决这个问题。我不知道在服务器端Node.js上使用promises是否是一种好习惯。
let fileName = "";
let p = new Promise((resolve, reject) => {
form.on('file', function (field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name), function (err) {
if (err != null) {
console.log(err);
reject(err);
}
fileName = path.join(form.uploadDir, file.name);
resolve(fileName);
});
});
});
p.then((fileName) => {
console.log("NAME " + fileName);
});