Загружать файлы на удаленный сервер, используя multer sftp в express Node js?

Я пытаюсь загрузить файлы на удаленный сервер, используя multer-sftp в node js. поскольку я следую официальным документам 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 открыт в моем домене. Ожидая предложений, Спасибо в Advance.

Ответ 1

Для вашей ошибки есть две возможности

  • порт № 22 не является открытым, также не может получить доступ к этой папке
  • Проверьте папку папки в домене

Загрузка файлов на удаленный сервер с помощью multer-sftp осуществляется легко и гибко. также мы можем загрузить файлы на удаленный сервер с помощью методов scp, ssh в node js.

Рабочий код:

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.

Надеюсь, что это поможет!