首页 > 解决方案 > promise-sftp 在“放置”后挂起

问题描述

我正在开发一个使用promise-sftp0.11.3 版本将文件上传到 SFTP 服务器的 NodeJS 组件。我基本上是在做这些步骤:

const PromiseFtp = require('promise-sftp');
const ftp = new PromiseFtp();
await ftp.connect(...);
await ftp.put(imageBuf, './subdir/fileName');
await ftp.end();

我确保所有步骤都能正常工作,直到put. imageBuf是一个存储二进制图像数据的 Buffer 对象。我有这些我不明白的效果:

我已经尝试ftp.statput. 这样做会导致不再从stat通话中返回。我有另一个函数调用ftp.unlink,而不是put正常工作。这就是为什么我猜这个put电话是罪魁祸首。

我在这里做错了吗?有什么方法可以调试我的代码以查看发生了什么/出了什么问题?

标签: node.jsfile-uploadpromisessh2-sftp

解决方案


经过进一步调查,我意识到上传的图像在将文件名传递给put. 我试图输出调试信息(使用debug传递给connect调用的参数),但我看不到任何有用的提示来解决我的问题。

阅读promise-sftp软件包的文档,我意识到最后一次更新以及最新的问题已经超过 3 年了,并且自 0.9.0 版以来没有更新文档。由于某些问题被标记为“需要帮助”,我的猜测是,该软件包没有得到积极维护。

所以我终于切换到包ssh2-sftp-client,它是最新的。我什至不必更改代码(require显然只有参数),上传现在完美无缺。


推荐阅读