конвертировать читаемый поток, чтобы сохранить его как файл в локальном - PullRequest
0 голосов
/ 19 декабря 2018

Я использую 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: , …}

1 Ответ

0 голосов
/ 19 декабря 2018

Поскольку 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'));
    })
...