C9.io上的Multer,Node,EACCES错误 [英] Multer, Node, EACCES error on C9.io

查看:82
本文介绍了C9.io上的Multer,Node,EACCES错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hiya预先感谢您可以提供的任何帮助. 我正在使用C9.io,node,express,multer,gridfs-stream.我得到了:

Hiya all thanks in advance for any help you can provide. I am using C9.io, node, express, multer, gridfs-stream. And Im getting:

 /home/ubuntu/workspace/node_modules/multer/index.js:25
  mkdirp(dest, function(err) { if (err) throw err; });
 Error: EACCES, mkdir '/uploads'

我运行server.js脚本,这就是我得到的错误.我相信这与权限有关,但是我已经尝试将公用文件夹和chmod斧头切成小块,你们对如何处理还有其他建议.仍然出现相同的错误. 我有的代码是 server.js

I run the server.js script and that is the error that I get. I believe is something to do with permissions but i have tried chown the public folder and chmod ax, you guys have any other suggestions as to what to do?. Still get same error. The code I have is 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错误.

Did you ever figure this out? I was getting the EAccess error as well.

为解决此问题,我执行了以下操作.

To fix the issue I did the following.

我必须确保包括了path = require('path'),也不确定与Multer版本相比您的问题有多旧,但是我看起来在版本1.0.3中,您必须先multer = require('multer'),然后在该upload = multer()以下,这也是您在其中保留配置信息的位置.

I had to make sure that path = require('path') was included also not sure how old your question is compared to Multer releases but i looks like in version 1.0.3 you have to multer = require('multer') then below that upload = multer() also this is where you stick in the config information.

您最终获得

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之类的

then do app.post like

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.  
})

希望这会有所帮助.

这篇关于C9.io上的Multer,Node,EACCES错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆