使用multer sftp在快速节点js中将文件上传到远程服务器?

时间:2017-11-10 03:21:26

标签: javascript node.js file-upload remote-server multer

我正在尝试使用节点js中的multer-sftp将文件上传到远程服务器。因为我正在关注官方文档npm multer-sftp。以前我将文件上传到Amazon S3而不是远程服务器。现在我想将文件上传到远程服务器。

API:

exports.newFileUpload =  function(req , res , next){     
    var storage = sftpStorage({
      sftp: {
        host: 'http://www.port*****es.in/',
        port: 22,
        username: 'username',
        password: 'password'

      },
      destination: function (req, file, cb) {
        cb(null, 'images/')
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
      }
    })

    var upload = multer({ storage: storage }).array('file');

    upload(req,res,function(err){
        logger.debug(JSON.stringify(req.body));
              logger.debug(JSON.stringify(req.files));
          if(err){
               logger.debug("Error Occured", JSON.stringify(err));
               res.json({error_code:1,err_desc:err});

               return;
          } else{
              res.json({error_code:0,err_desc:null});
          }
      });
}

上传文件时,返回错误

    2017-11-10T02:39:48.297Z - debug: Error Occured {"code":"ENOTFOUND","errno":"ENOTFOUND",
"syscall":"getaddrinfo","hostname":"http://www.port****es.in/","host":"http://www.port****es.in/",
"port":22,"level":"client-socket","storageErrors":[]}

在我的域名中还打开了22号端口。等待建议, 在此先感谢。

1 个答案:

答案 0 :(得分:7)

对于您的错误,有两种可能性

  1. 端口号22未打开状态,也无法访问该文件夹
  2. 检查域中的文件夹目录
  3. 使用multer-sftp将文件上传到远程服务器非常简单灵活。 我们也可以使用节点js中的scp,ssh技术将文件上传到远程服务器。

    工作代码:

    exports.newFileUpload =  function(req , res , next){     
        var storage = sftpStorage({
          sftp: {
            host: 'hostname',
            port: 22,
            username: 'username',
            password: 'password'
    
          },
          destination: function (req, file, cb) {
            cb(null, 'images/')
          },
          filename: function (req, file, cb) {
            cb(null, file.fieldname + '-' + Date.now())
          }
        })
    
        var upload = multer({ storage: storage }).array('file');
    
        upload(req,res,function(err){
            logger.debug(JSON.stringify(req.body));
                  logger.debug(JSON.stringify(req.files));
              if(err){
                   logger.debug("Error Occured", JSON.stringify(err));
                   res.json({error_code:1,err_desc:err});
              } else{
                   logger.debug("Files uploaded successfully");
                  res.json({error_code:0,err_desc:null});
              }
          });
    }
    

    注意:使用' multer-sftp'端口号22在远程服务器中打开。

    希望它有所帮助!