Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js C9.io上的多个、节点、EACCES错误_Node.js_File Permissions_Multer - Fatal编程技术网

Node.js C9.io上的多个、节点、EACCES错误

Node.js C9.io上的多个、节点、EACCES错误,node.js,file-permissions,multer,Node.js,File Permissions,Multer,大家好,提前感谢你们提供的任何帮助。 我正在使用C9.io、node、express、multer、gridfs流。我得到: /home/ubuntu/workspace/node_modules/multer/index.js:25 mkdirp(dest, function(err) { if (err) throw err; }); Error: EACCES, mkdir '/uploads' 我运行server.js脚本,这就是我得到的错误。我相信这与权限有关,但我已经尝试过

大家好,提前感谢你们提供的任何帮助。 我正在使用C9.io、node、express、multer、gridfs流。我得到:

 /home/ubuntu/workspace/node_modules/multer/index.js:25
  mkdirp(dest, function(err) { if (err) throw err; });
 Error: EACCES, mkdir '/uploads'
我运行server.js脚本,这就是我得到的错误。我相信这与权限有关,但我已经尝试过使用公共文件夹和chmod ax,你们还有其他建议吗?。仍然会得到相同的错误。 我的密码是 server.js

app.use('/uploads', express.static(__dirname + '/public/uploads'));
app.use(multer({dest: '/uploads/'}));

app.use(methodOverride());

app.get('/form',function (req,res){
   res.render('form'); 
});

app.get('/api/taxis', function(req,res){
    taxiModel.Taxi.find({}).exec(function(error,collection){
        res.send(collection);
        });
});

// app.get('user/:name', function(req,res){
//     taxiModel.Taxi.find({name:req.param.nmae},function(err,docs){
//       if(err)res.json(err);
//       else res.render();
//     }
// });

app.get('*', function (req,res){
   res.render('index'); 
});
app.post('/new',function(req,res){
    var dirname = require('path').dirname(__dirname);
     var filename = req.files.dnimgfront.name;
     var path = req.files.dnimgfront.path;
     var type = req.files.dnimgfront.mimetype;
     var gfs = Grid(conn.db);
     var read_stream =  fs.createReadStream(dirname + '/' + path);
     var writestream = gfs.createWriteStream({filename: filename});
     read_stream.pipe(writestream);

});




mongoose.connect('mongodb://jsrosas:12345@ds031721.mongolab.com:31721/taxis');

var conn=mongoose.connection;

conn.once('open', function(){
    console.log('connected to mongodb succesfully!');
});

app.listen(process.env.PORT, process.env.IP);

你有没有想过?我也得到了EAccess错误

为了解决这个问题,我做了以下操作

我必须确保包含了
path=require('path')
,也不确定您的问题与Multer版本相比有多旧,但在版本1.0.3中,您必须
Multer=require('Multer')
,然后在该
upload=Multer()
下面插入配置信息

你最终得到的是

var multer = require('multer'),
/*some config stuff for multer*/
    Limits = { fileSize: 10 * 1024 * 1024, files:1 };

/* specify one file so ppl can't flood the server with infinite file
  uploads or make it what you want but don't just leave it. Alternately 
  you can write the config stuff like the dest: value below. */

/*pass multer the configuration information and/or set config information*/
var upload = multer({dest: path.join(__dirname+'/uploads'),
                     limits: Limits
                    });
然后像这样发布app.post

app.post('/uploads', upload, function(req,res){
    // expose req.file to a variable or do some process by which you send it to your database.  
})

希望这有帮助

我很确定你一开始并不想写“/uploads”。尝试
app.use(multer({dest:'./uploads/'}))或者更好:
app.use(multer({dest:u dirname+'/public/uploads/'}))
因为您似乎已经直接提供了服务,或者如果您的真正意思是:
app.use(multer({dest:uu dirname+'/uploads'}))是的,很抱歉这是我的server.js的预览版,我会试试。但在上一个版本中,我确实定义了multer dest,但仍然给了我这个问题。@msdex很抱歉我尝试了“app.use(multer({dest:u dirname+'/public/uploads/');”它给了我:events.js:72 thrower;//未处理的“error”事件^error:enoint,open非常感谢您提出此问题已有一段时间了。我使用了app.use(multer({dest:u dirname+'/public/uploads/'}));