如何获得 fs.rename 的结果
How to get result of fs.rename
我正在使用 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 的见解,我使用 promises 解决了这个问题。我不知道在服务器端使用 promises 是否是好的做法 Node.js。
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);
});
我正在使用 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 的见解,我使用 promises 解决了这个问题。我不知道在服务器端使用 promises 是否是好的做法 Node.js。
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);
});