我正在使用ssh2-sftp-client从远程服务器获取文件。我正在以可读流的形式获取文件。我想将此可读流转换为所需的文件(sample.png为png文件,sample.doc文件为doc文件等)
这是我的代码-
let Client = require('ssh2-sftp-client');
let sftp = new Client();
sftp.connect({
host: sftpCredentials.host,
port: sftpCredentials.port,
username: sftpCredentials.username,
password: sftpCredentials.password
}).then(res => sftp.list('/'))
.then(res => {
const file = await sftp.get('/sample.png');
})
我想将此文件保存在本地。文件是可读的流,如下所示-
ReadStream {_readableState: ReadableState, readable: true, domain: null, _events: Object, _eventsCount: 3, …}
_events:Object {end: , error: , readable: }
_eventsCount:3
_maxListeners:undefined
_readableState:ReadableState {objectMode: false, highWaterMark: 65536, buffer: BufferList, …}
autoClose:true
destroyed:false
domain:null
end:undefined
flags:"r"
handle:Buffer(4) [0, 0, 0, …]
mode:438
path:"/sample.png"
pos:131072
readable:true
readableHighWaterMark:65536
sftp:SFTPStream {_readableState: ReadableState, readable: true, domain: null, …}
start:undefined
__proto__:Readable {open: , _read: , destroy: , …}
答案 0 :(得分:1)
file
是可读流,因此您可以尝试
let Client = require('ssh2-sftp-client');
let fsv=vrequire('fs');
let sftp = new Client();
sftp.connect({
host: sftpCredentials.host,
port: sftpCredentials.port,
username: sftpCredentials.username,
password: sftpCredentials.password
}).then(res => sftp.list('/'))
.then(async res => {
const file = await sftp.get('/sample.png');
const ws=fs.createWriteStream('sample.png');
file.pipe(ws);
file.on('end',()=>console.log('done'));
})