如何重命名node.js中的文件?

如何重命名node.js中的文件?,node.js,Node.js,我正在尝试使用angular和node实现一个文件上传表单。文件上传很好,但我想扫描上传目录,看看文件名是否已经存在。如果是这样,那么该文件将被重命名。以下是我到目前为止的情况: app.post('/file', function(req, res) { var fs = require('fs'); var file = req.files.file; // destination directory var dest_dir = './uploads;

我正在尝试使用angular和node实现一个文件上传表单。文件上传很好,但我想扫描上传目录,看看文件名是否已经存在。如果是这样,那么该文件将被重命名。以下是我到目前为止的情况:

app.post('/file', function(req, res) {
    var fs = require('fs');
    var file = req.files.file;

    // destination directory
    var dest_dir = './uploads;
    var filename = file.name;

    // THIS ISN'T WORKING, I.E., THE FILE IS NOT RENAMED
    fs.readdir(dest_dir, function(err, dir_files) {
        for(var i = 0; i < dir_files.length; i++) {
            if(dir_files[i] == filename) {
                console.log("I can see this message, but the file isn't renamed");
                filename = filename + '_1'; // rename the file
            }
        }
    });

    // read file from temp dir and store in permanent dir
    var source = fs.createReadStream(file.path);
    var dest = fs.createWriteStream(dest_dir + '/' + filename);
    source.pipe(dest);

    source.on('end', function() { res.json("File has been uploaded!") });
    source.on('error', function(err) { res.json("There was an error when attempting to upload this file.") });
});
app.post('/file',函数(req,res){
var fs=需要('fs');
var file=req.files.file;
//目标目录
var dest_dir='/上传;
var filename=file.name;
//这不起作用,即文件未重命名
fs.readdir(dest\u dir,函数(err,dir\u文件){
对于(var i=0;i
我做错了什么?

用于重命名节点中的文件。

用于重命名节点中的文件。

用于重命名节点中的文件。

用于重命名节点中的文件。

fs.readDir()是异步的,因此在fs.readDir()回调中的for循环之前执行以下代码:

var dest = fs.createWriteStream(dest_dir + '/' + filename);
source.pipe(dest);
如果要在for循环之后执行,则需要将此代码放入回调中。变化如下:

app.post('/file', function(req, res) {
var fs = require('fs');
var file = req.files.file;
var source = fs.createReadStream(file.path);
var dest;

// destination directory
var dest_dir = './uploads;
var filename = file.name;

fs.readdir(dest_dir, function(err, dir_files) {
    for(var i = 0; i < dir_files.length; i++) {
        if(dir_files[i] == filename) {
            console.log("I can see this message, but the file isn't renamed");
            filename = filename + '_1'; // rename the file
            break;
        }
    }

    dest = fs.createWriteStream(dest_dir + '/' + filename);
    source.pipe(dest);

 });
 source.on('end', function() { res.json("File has been uploaded!") });
 source.on('error', function(err) { res.json("There was an error when attempting to upload this file.") });
app.post('/file',函数(req,res){
var fs=需要('fs');
var file=req.files.file;
var source=fs.createReadStream(file.path);
var-dest;
//目标目录
var dest_dir='/上传;
var filename=file.name;
fs.readdir(dest\u dir,函数(err,dir\u文件){
对于(var i=0;i
}))

fs.readDir()是异步的,因此下面的代码在fs.readDir()回调中的for循环之前执行:

var dest = fs.createWriteStream(dest_dir + '/' + filename);
source.pipe(dest);
如果要在for循环之后执行,则需要将此代码放入回调中。变化如下:

app.post('/file', function(req, res) {
var fs = require('fs');
var file = req.files.file;
var source = fs.createReadStream(file.path);
var dest;

// destination directory
var dest_dir = './uploads;
var filename = file.name;

fs.readdir(dest_dir, function(err, dir_files) {
    for(var i = 0; i < dir_files.length; i++) {
        if(dir_files[i] == filename) {
            console.log("I can see this message, but the file isn't renamed");
            filename = filename + '_1'; // rename the file
            break;
        }
    }

    dest = fs.createWriteStream(dest_dir + '/' + filename);
    source.pipe(dest);

 });
 source.on('end', function() { res.json("File has been uploaded!") });
 source.on('error', function(err) { res.json("There was an error when attempting to upload this file.") });
app.post('/file',函数(req,res){
var fs=需要('fs');
var file=req.files.file;
var source=fs.createReadStream(file.path);
var-dest;
//目标目录
var dest_dir='/上传;
var filename=file.name;
fs.readdir(dest\u dir,函数(err,dir\u文件){
对于(var i=0;i
}))

fs.readDir()是异步的,因此下面的代码在fs.readDir()回调中的for循环之前执行:

var dest = fs.createWriteStream(dest_dir + '/' + filename);
source.pipe(dest);
如果要在for循环之后执行,则需要将此代码放入回调中。变化如下:

app.post('/file', function(req, res) {
var fs = require('fs');
var file = req.files.file;
var source = fs.createReadStream(file.path);
var dest;

// destination directory
var dest_dir = './uploads;
var filename = file.name;

fs.readdir(dest_dir, function(err, dir_files) {
    for(var i = 0; i < dir_files.length; i++) {
        if(dir_files[i] == filename) {
            console.log("I can see this message, but the file isn't renamed");
            filename = filename + '_1'; // rename the file
            break;
        }
    }

    dest = fs.createWriteStream(dest_dir + '/' + filename);
    source.pipe(dest);

 });
 source.on('end', function() { res.json("File has been uploaded!") });
 source.on('error', function(err) { res.json("There was an error when attempting to upload this file.") });
app.post('/file',函数(req,res){
var fs=需要('fs');
var file=req.files.file;
var source=fs.createReadStream(file.path);
var-dest;
//目标目录
var dest_dir='/上传;
var filename=file.name;
fs.readdir(dest\u dir,函数(err,dir\u文件){
对于(var i=0;i
}))

fs.readDir()是异步的,因此下面的代码在fs.readDir()回调中的for循环之前执行:

var dest = fs.createWriteStream(dest_dir + '/' + filename);
source.pipe(dest);
如果要在for循环之后执行,则需要将此代码放入回调中。变化如下:

app.post('/file', function(req, res) {
var fs = require('fs');
var file = req.files.file;
var source = fs.createReadStream(file.path);
var dest;

// destination directory
var dest_dir = './uploads;
var filename = file.name;

fs.readdir(dest_dir, function(err, dir_files) {
    for(var i = 0; i < dir_files.length; i++) {
        if(dir_files[i] == filename) {
            console.log("I can see this message, but the file isn't renamed");
            filename = filename + '_1'; // rename the file
            break;
        }
    }

    dest = fs.createWriteStream(dest_dir + '/' + filename);
    source.pipe(dest);

 });
 source.on('end', function() { res.json("File has been uploaded!") });
 source.on('error', function(err) { res.json("There was an error when attempting to upload this file.") });
app.post('/file',函数(req,res){
var fs=需要('fs');
var file=req.files.file;
var source=fs.createReadStream(file.path);
var-dest;
//目标目录
var dest_dir='/上传;
var filename=file.name;
fs.readdir(dest\u dir,函数(err,dir\u文件){
对于(var i=0;i
}))