Search code examples
node.jsexpressfile-uploadmulter

How to upload files to specific folder multer-ftp on remote server?


Using this code I try send files on remote server:

var upload = multer({
    storage: new ftpStorage({
        basepath: '/uploads/',

        ftp: {
            host: 'samplehost.com',
            secure: false, // enables FTPS/FTP with TLS
            user: 'login',
            password: 'password'
        }
    })
});

but always save file in root directory, not in uploads, how can I fix this?


Solution

  • Instead of multer-ftp, Uploading Files to remote server using multer-sftp is easy and flexible way. also we can upload the files to remote server with scp, ssh techniques in node js.

    Working Code:

    exports.newFileUpload =  function(req , res , next){
    
       // sftp settings     
        var storage = sftpStorage({
          sftp: {
            host: 'hostname',
            port: 22,
            username: 'username',
            password: 'password'
    
          },
          destination: function (req, file, cb) {
            cb(null, 'images/') // designation folder in host
          },
          filename: function (req, file, cb) {
            // file name settings
            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});
              }
          });
    }
    

    Note: When using 'multer-sftp' port no 22 is open in remote server.

    Official Documentation multer-sftp

    Hope it helps !