在尝试将scp'd文件写入目录时出现错误:EISDIR

时间:2013-09-13 02:24:49

标签: node.js scp

所以我正在玩RabbitMQ并为消费者使用节点,我试图从远程服务器上取下一个图像文件,只要我使用'./'作为目的地,这种方法就可以正常工作我用'c:\ images'之类的东西炸弹:

{ [Error: EISDIR, open 'C:\images'] errno: 28, code: 'EISDIR', path: 'C:\\images' }

我也使用了'\ images',结果相同

user.moveImage.js:

var amqp = require('amqp'),
  cxn = require('./cxn.js'),
  env = require('./env.js'),
  argv = require('optimist').argv,
  fs = require('fs'),
  client = require('scp2');

var path = env.local.path;
if(argv.env != undefined) {
  path = env[argv.env].path
} else {
  console.log('Undefined or invalid environment, using local');
}

var connection = amqp.createConnection({ url: cxn.connectionUrl() });

// Wait for connection to become established.
connection.on('ready', function () {
// Use the default 'amq.topic' exchange
connection.queue('user.image.move', {
  durable: true,
  autoDelete: false
},function(q){
    // Catch all messages
    q.bind('#');

    // Receive messages
    q.subscribe(function (message) {
      console.log(message);
      //scp the file from the remote to the local imagePath
      fs.readdir(env.local.imagePath,function(err, files){
        console.log(files);
      });
      client.scp({
          host: message.host,
          username: '#######',
          password: '#################',
          path: message.webroot + message.image_url
      }, env.local.imagePath, function(err) {console.log(err)})

    });
  });
});
connection.on('error',function(e){
  console.log(e);
})

env.js:

var local = 
    path: 'C:\\Users\\ian\\Documents\\sites\\townspot\\app\\webroot',
    mediaPath: 'C:\\media',
    imagePath: 'c:\\images'
}

exports.local = local;

1 个答案:

答案 0 :(得分:8)

找到了答案。我是个假头。忘记了斜杠,它试图将文件写在目录上,而不是将文件放在目录