我正在使用 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
的。 ,而不是如何绕过异步属性
最佳答案
根据 @pawel 的见解,我使用 Promise 来解决这个问题。我不知道在服务器端 Node.js 上使用 Promise 是否是一个好习惯。
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);
});
关于javascript - 如何获取 fs.rename 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47044891/