JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2937
  • Score
    100M100P100Q127649F
  • License BSD-3-Clause

SFTP Promise wrapper for ssh2 SFTP commands

Package Exports

  • sftp-promises

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sftp-promises) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

sftp-promises

NPM version

SFTP Promise Wrapper for ssh2

Support basic SFTP transaction with promises, specifically for fronting SFTP with a web based API using something like Koa

Warning

Each request will create a new conneciton and close it when finished, this is by design as its intended to be used in stateless web applications. As such care should exercised when using on high traffic systems to avoid too many connections to SFTP server and general connection overhead.

Usage

One connection per call

var config = {host: 'localhost', username: 'user', password: 'pass' };
var SFTPClient = require('sftp-promises');
var sftp = new SFTPClient(config);
     
sftp.ls('~/').then(function(list) { console.log(list) })

Persistent Session calls (Experimental)

var config = {host: 'localhost', username: 'user', password: 'pass' };
var SFTPClient = require('sftp-promises');
var sftp = new SFTPClient();

// get session
var session = sftp.session(config).then(function(ftpSession) { session = ftpSession })
...code to ensure session is ready...  
sftp.ls('~/', session).then(function(list) { console.log(list) })

// close socket
session.end()

config options are the same as ssh2 config options.

Supported calls

All calls take an optional ssh2 Connction object as the final arguement for using persistent session.

sftp.stat(<string>remote_path, [ssh2.Connection]session) returns a promise with on object containing path attributes
sftp.ls(<string>remote_path, [ssh2.Connection]session) returns a promise with an object descibing the path
sftp.getBuffer(<string>remote_path, [ssh2.Connection]session) returns a promise with a buffer containing the file contents
sftp.putBuffer(<Buffer>data, <string>remote_path, [ssh2.Connection]session) returns a promise with a boolean, true if successful
sftp.get(<string>remote_path, <string>local_path, [ssh2.Connection]session) returns a promise with a boolean, true if successful
sftp.put(<string>local_path, <string>remote_path, [ssh2.Connection]session) returns a promise with a boolean, true if successful
sftp.rm(<string>location, [ssh2.Connection]session) returns a promise with a boolean, true if successful
sftp.mv(<string>src, <string>dest, [ssh2.Connection]session) returns a promise with a boolean, true if successful

Planned Features/Updates

  • Streaming implementation for get and put
  • mkdir and rmdir calls
  • have test rely on ssh2.server instead of local ssh server