NodeJS SFTP获取zip文件

时间:2019-02-07 16:27:01

标签: node.js sftp

尝试使用SFTP从服务器上获取一组zip文件。这是试图仅获取单个文件的简化代码段:

var fs = require('fs');
let Client = require('ssh2-sftp-client');
let sftp = new Client();
sftp.connect({
    host: 'ftp.domain.com',
    port: '22',
    username: 'username',
    password: 'password'
}).then(() => {
    sftp.get("fileName.zip").then((data) => {
        data.pipe(fs.createWriteStream('download/fileName.zip'));
    }).catch((err) => {
        console.log(err, 'get error');
    });
}).catch((err) => {
    console.log(err, 'connect error');
});

我确实下载了一个文件,但是虽然服务器上的文件约为1.4 MB,但下载的文件为2.5 MB,并且无法使用任何zip实用程序打开。我怀疑这是一个编码问题,但是到目前为止我发现的所有答案都说设置二进制流的编码。

1 个答案:

答案 0 :(得分:1)

关于该问题,库的github页面上有一个未解决的问题-> Corrupt file on the SFTP

您可以尝试将编码实际设置为null:

sftp.get("fileName.zip", null, null).then(...)