.= 'tag.htm'; break; case 'flag': $pre .= $default_pre .= 'flag.htm'; break; case 'my': $pre .= $default_pre .= 'my.htm'; break; case 'my_password': $pre .= $default_pre .= 'my_password.htm'; break; case 'my_bind': $pre .= $default_pre .= 'my_bind.htm'; break; case 'my_avatar': $pre .= $default_pre .= 'my_avatar.htm'; break; case 'home_article': $pre .= $default_pre .= 'home_article.htm'; break; case 'home_comment': $pre .= $default_pre .= 'home_comment.htm'; break; case 'user': $pre .= $default_pre .= 'user.htm'; break; case 'user_login': $pre .= $default_pre .= 'user_login.htm'; break; case 'user_create': $pre .= $default_pre .= 'user_create.htm'; break; case 'user_resetpw': $pre .= $default_pre .= 'user_resetpw.htm'; break; case 'user_resetpw_complete': $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': $pre .= $default_pre .= 'single_page.htm'; break; case 'search': $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } function theme_mode_pre($type = 0) { global $config; $mode = $config['setting']['website_mode']; $pre = ''; if (1 == $mode) { $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>javascript - ssh2-sftp-client Get request node.js - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - ssh2-sftp-client Get request node.js - Stack Overflow

programmeradmin0浏览0评论

I am currently attempting to download a file from an FTP server using ssh2-sftp-client.

I can see the list of the files as shown in the code below, my problem is when it es to downloading the files.

As you can see from my code below I am attempting to use the sftp.get to get the contents of the file and node file system to create a file.

When the file saves it doesn't save the contents of the file on the server is only saves [object Object]

var Client = require('../../node_modules/ssh2-sftp-client');
var sftp = new Client();
var root = '/files';
var fs = require('fs');

sftp.connect({
  host: '192.168.0.1',
  port: '22',
  username: 'user',
  password: 'password'
}).then(() => {
  return sftp.list(root);
}).then((data) => {
  for( var i = 0, len = data.length; i < len; i++) {
    console.log(data[i].name);
    var name = data[i].name;
    sftp.get(root+'/'+name).then((file) => {
      console.log(file);
      fs.writeFile('downloads/'+name, file, function(err) {
      if(err) {
        return console.log(err);
      }
      console.log("The file was saved!");
    });
  })      }
}).catch((err) => {
  console.log(err, 'catch error');
});

How can I get this to save the contents of the file?

Any help or a push in the right direction would be very appreciated.

I am currently attempting to download a file from an FTP server using ssh2-sftp-client.

I can see the list of the files as shown in the code below, my problem is when it es to downloading the files.

As you can see from my code below I am attempting to use the sftp.get to get the contents of the file and node file system to create a file.

When the file saves it doesn't save the contents of the file on the server is only saves [object Object]

var Client = require('../../node_modules/ssh2-sftp-client');
var sftp = new Client();
var root = '/files';
var fs = require('fs');

sftp.connect({
  host: '192.168.0.1',
  port: '22',
  username: 'user',
  password: 'password'
}).then(() => {
  return sftp.list(root);
}).then((data) => {
  for( var i = 0, len = data.length; i < len; i++) {
    console.log(data[i].name);
    var name = data[i].name;
    sftp.get(root+'/'+name).then((file) => {
      console.log(file);
      fs.writeFile('downloads/'+name, file, function(err) {
      if(err) {
        return console.log(err);
      }
      console.log("The file was saved!");
    });
  })      }
}).catch((err) => {
  console.log(err, 'catch error');
});

How can I get this to save the contents of the file?

Any help or a push in the right direction would be very appreciated.

Share Improve this question asked Aug 22, 2017 at 9:04 Tony HenslerTony Hensler 1,4926 gold badges16 silver badges30 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

I resolved my problem by changing the sftp.get to the following:-

sftp.get(root+"/"+name).then((stream) => {
  stream.pipe(fs.createWriteStream(local+name));
});

I hope this helps anybody else who might have this issue.

You can pass filename with absolute path as second argument in sftp.get() function. Here is the code snippet using async/await:

let sftp = new SFTPClient();
let YOURFILE = path.join(process.cwd(), "YOURFILENAME.EXTENSION");
try {
const connection = await sftp.connect({
host: "YOURHOST",
port: "PORT",
username: "USERNAME",
password: "PASSWORD",
});

const fileList = await sftp.list("/");

console.log("file list ====>>> ", fileList);

await sftp.get(fileList[0].name, YOURFILE);
sftp.end();
console.log("closing sftp connection");
} catch (err) {
console.log(
"Error while connecting to sftp server or fetching files from sftp server====>>>> ",err);
}
发布评论

评论列表(0)

  1. 暂无评论