【问题标题】:node.js fs.rename() error enoentnode.js fs.rename() 错误 enoent
【发布时间】:2012-10-19 09:10:53
【问题描述】:

将文件上传到我的服务器后,我尝试将其移动到另一个文件夹(同一磁盘),但出现错误

{[Error:ENOENT,rename 'F\myproject\1b231234nsdifhoi2323']
  errno:34,
  code:ENOENT,
  path:'F\\myproject\\1b231234nsdifhoi2323'
}

在 Windows 上使用并使用

app.use(express.bodyParser({
    uploadDir:'./Temp'
}));

这是我的重命名代码

exports.upload = function(req, res,next){
    console.log( req.body);
    console.log(req.files);
    var tmp_path = req.files.product_video.path;
    var target_path = '\\Video\\' + req.files.product_video.name;

    console.log(tmp_path);       // Temp\1b231234nsdifhoi2323
    console.log(target_path);    // \Video\name

    fs.rename(tmp_path, target_path, function(err) {
        if (err) {
            console.log(err)
        };
        fs.unlink(tmp_path, function() {
            if (err){
                console.log(err)
            }else{
                res.send('File uploaded to: ' + target_path + ' - ' + req.files.product_video.size + ' bytes');

            }
        });
    });
};

我好像弄错了路径,但我无法弄清楚!

【问题讨论】:

  • 您在 Windows 上吗?如果是这样,您应该在路径名的驱动器部分中包含冒号 (:),即 F:
  • 但 Temp 和 Video 文件夹在同一个磁盘中
  • 好吧,我编辑了 var target_path = 'F:\\myproject\\Video\\' + req.files.product_video.name;它比x有效
  • 为了将来参考,您可以在此处查找 E*** 错误代码:github.com/joyent/node/blob/master/deps/uv/include/uv.h
  • @paynestrike,最好使用 var target_path = __dirname + "\\Video" + req.files.product_video.name (如果您的文件在 F:\myproject 中)

标签: node.js express rename fs


【解决方案1】:

您正在访问一个不存在的文件 - 因为路径不存在。

尝试编辑路径:
"F\myproject\1b2" 更改为"F:/myproject/1b2""F:\myproject\1b2"

如果不起作用,请使用:(__dirname 将创建一个相对于脚本的路径)
__dirname + "/../../myproject\1b2"

用于调试:
试试read这个文件(如果你得到同样的错误——这意味着路径不好,rename很好)

【讨论】:

  • 床?这是一个错误的错字吗?
  • :D 已修复.. 是的,这是一个错字
【解决方案2】:

为避免斜线问题,您可以使用path.sep,以便它根据操作系统处理斜线\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2017-04-15
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多