我使用ssh2-sftp-client从远程服务器获取文件。我正在获取可读流中的文件。我想把这个可读的流转换成想要的文件( png文件的sample.png文件,文档文件的sample.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: , …}发布于 2018-12-19 15:16:58
因为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'));
})https://stackoverflow.com/questions/53845667
复制相似问题