ENOENT错误 - 我已成功上传文件但无法移动文件

时间:2014-06-02 02:38:18

标签: javascript node.js express fs

我已成功将文件上传到临时目录,并希望将它们移至目录profile_pictures。这似乎是一个简单的简单的东西,但我已经被困在这里一个小时了!

enter image description here

使用 Express fs 执行此操作非常简单:

app.post('/upload', function (req, res, next) {
    console.log("User uploading profile picture...");

    var tmp_path = req.files.profile_picture.path; // get the temporary location of the file
    var ext = path.extname(req.files.profile_picture.name); // get the extension of the file with the path module

    var target_path = '/profile_pictures/' + req.body.username + ext; // set where the file should actually exists - in this case it is in the "images" directory

    fs.rename(tmp_path, target_path, function (err) { // move the file from the temporary location to the intended location
        if (err) throw err;

        fs.unlink(tmp_path, function (err) { // delete the temporary file, so that the explicitly set temporary upload dir does not get filled with unwanted files
            if (err) throw err;
            res.send('File uploaded to: ' + target_path + ' - ' + req.files.profile_picture.size + ' bytes');
        });
    });
});

但这会导致错误:

  

错误:ENOENT,重命名' tmp / 5162-2fftn.jpg']错误:34,代码:' ENOENT',路径:' tmp / 5162-2fftn。 JPG'

顶部的图像是连接到此应用程序工作目录的SFTP管理器的屏幕截图,显然该目录确实存在!

我的错误是什么?

1 个答案:

答案 0 :(得分:0)

我花了几个小时自己来解决这个问题。看看这里澄清一下, https://github.com/nodejs/node-v0.x-archive/issues/2703

这里的线程实际上指向了正确的方向, Move File in ExpressJS/NodeJS

是的,fs.rename不会在两个不同的磁盘/分区之间移动文件。这是正确的行为。 fs.rename提供了相同的功能,可以在linux中重命名(2)。