node.js - Node.js中的SFTP上传空文件
问题描述
我正在处理一个项目时遇到问题,我正在使用一个名为 sftp-ssh2-client 的节点模块从我的 FTP 服务器下载文件,然后尝试将流传递回我的 FTP 服务器,但传递到另一个目录。
代码如下所示:
const stream = sftp.get(`path/to/file.csv.gz`).then(() => {
}).catch((err) => {
});
sftp.put(stream, 'path/to/new/file.csv.gz').then(() => {
}).catch((err) => {
})
但是,当我拨入我的 FTP 服务器到文件被放置到的位置时,文件大小为 0,并且下载时已损坏。谁能告诉我我在这里做错了什么?
非常感谢,
G
解决方案
sftp.get()
不返回流,它返回解析为流的承诺,因此您的代码应如下所示:
sftp.get('path/to/file.csv.gz').then(stream => {
return sftp.put(stream, 'path/to/new/file.csv.gz');
}).catch(err => {
...
});
但是,在我看来,您可以只使用sftp.rename()
,这不需要下载和上传整个文件:
sftp.rename('path/to/file.csv.gz', 'path/to/new/file.csv.gz').then(...);
此外,如果您确实想采用先下载后上传的方式,请务必阅读有关 encoding 的文档。
推荐阅读
- loops - 如何在 Fortran 中将随机数放入循环中
- python-3.x - sqlite3.OperationalError:没有这样的表:
- javascript - Nodejs拆分大数组并进行多个API调用
- three.js - threejs GLTF 模型被拉伸了?
- r - 如何将具有 0 级别的因子的值作为原始数字返回
- debugging - 应用重启后 WEB 丢失数据的 shared_preferences
- json - 删除 JSON 文件中重复的 1:M 表示
- jenkins - 用于受限回购的 Jenkins 管道
- matrix - 使用 Power BI 中矩阵的每行总金额创建一个 percertange
- php - 无法从 wordpress 连接到 mysql 数据库