OSX Node.js文件上传ENOENT

时间:2014-02-11 07:18:06

标签: javascript macos node.js

我一直在使用Node.js来完成一个项目,到目前为止一直都很顺利。我正在使用express和节点。总的来说,我的目标非常简单......将图像上传到上传文件夹中的服务器。奇怪的是上传本身实际上有效,但当我去使用“重命名”功能时,它表示路径错误/权限与此错误:ENOENT。

我还测试过,通过调用read函数检查文件路径,确保路径100%正确。似乎只有在尝试修改文件时才会中断,因此我推断它是一个权限问题(除非对重命名函数有某种特殊要求)。我注意到,每次上传文件时,权限都设置为“custom”,并且只向除用户名之外的每个用户授予读取权限。我将在下面发布与此问题相关的代码:

/app/routes.js

var fs = require('fs');

app.post('/api/file-upload/:page_id', function(req, res) {
  //    fs.readFile(tmp_path, function (err, data) {
        //   if (err) throw err;
        //   console.log(data);
        // });

    var target_path = './public/images/' + req.files.featuredimg.name;

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

server.js

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

所有内容最终都在/ uploads中server.js旁边的根文件夹中,按预期工作。我似乎无法修改它们。我已经尝试了我能想到的一切,并且已经找到了问题。希望这是一个简单的修复。

希望有人可以帮我解决这个问题。我真的很感激!

1 个答案:

答案 0 :(得分:0)

确保您已在 public 下创建 images 文件夹。我有类似的问题。