尝试使用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实用程序打开。我怀疑这是一个编码问题,但是到目前为止我发现的所有答案都说不设置二进制流的编码。
答案 0 :(得分:1)
关于该问题,库的github页面上有一个未解决的问题-> Corrupt file on the SFTP
您可以尝试将编码实际设置为null:
sftp.get("fileName.zip", null, null).then(...)