转换可读流并将其保存为本地文件

Kom*_*sal 8 javascript node.js node-streams ssh2

我正在使用 ssh2-sftp-client 从远程服务器获取文件。我正在将文件放入可读流中。我想将此可读流转换为所需的文件(sample.png 作为 png 文件,sample.doc 文件作为 doc 文件等)

\n\n

这是我的代码-

\n\n
let Client = require(\'ssh2-sftp-client\');\nlet sftp = new Client();\n sftp.connect({\n    host: sftpCredentials.host,\n    port: sftpCredentials.port,\n    username: sftpCredentials.username,\n    password: sftpCredentials.password\n}).then(res => sftp.list(\'/\'))\n.then(res => {\n     const file = await sftp.get(\'/sample.png\');\n\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想将此文件保存在本地。文件是一个可读流,如下 -

\n\n
ReadStream {_readableState: ReadableState, readable: true, domain: null, _events: Object, _eventsCount: 3, \xe2\x80\xa6}\n    _events:Object {end: , error: , readable: }\n    _eventsCount:3\n    _maxListeners:undefined\n    _readableState:ReadableState {objectMode: false, highWaterMark: 65536, buffer: BufferList, \xe2\x80\xa6}\n    autoClose:true\n    destroyed:false\n    domain:null\n    end:undefined\n    flags:"r"\n    handle:Buffer(4) [0, 0, 0, \xe2\x80\xa6]\n    mode:438\n    path:"/sample.png"\n    pos:131072\n    readable:true\n    readableHighWaterMark:65536\n    sftp:SFTPStream {_readableState: ReadableState, readable: true, domain: null, \xe2\x80\xa6}\n    start:undefined\n    __proto__:Readable {open: , _read: , destroy: , \xe2\x80\xa6}\n
Run Code Online (Sandbox Code Playgroud)\n

lx1*_*412 7

由于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'));
    })
Run Code Online (Sandbox Code Playgroud)