gpt4 book ai didi

node.js - 使用 ssh2 sftp Node 读取较大的 sftp 文件

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:54 25 4
gpt4 key购买 nike

我正在尝试使用 ssh2-sftp 库在 Node.js 中读取/写入文件。当我在 sftp 站点上对较大的 CSV 文件(但不是太大——比如 2 MB)执行 sftp.get,然后读取返回流上的数据时,在第 14 个stream.on("data") 调用后,该调用卡在我身上。我已经用几个不同的示例文件对此进行了测试,代码在较小的文件上运行良好。但是,如果 CSV 文件大到足以通过第 14 次调用,它就会挂起,就像无法再读取一样,即使还有更多内容可供读取。并且stream.on("close")永远不会被调用。

显然这是非常奇怪的行为。希望也许有人使用这个库遇到了类似的事情并得到了一些指导。

如果有帮助的话,这里有一些代码

   sftp.get(currentFileName).then((readStream) => {
var counter = 0;

readStream.on("data", function(d) {
counter++;
console.log("counter = " + counter);
});

readStream.on("close", function(err) {
if (err) {
console.error("Problem with read stream for file " + currentFileName + ", error = ", err);
}
//done reading the individual file, all went well
else {
console.log("done reading the stream");
}
});

readStream.on('error', function(e){
console.error("Error retrieving file: " + e);
})

readStream.resume();

在第 14 次调用 readStream.on("data") 后,它就卡住了。可能读取了一半的文件。

最佳答案

事实证明,问题是 ssh2-sftp 似乎正在运行底层 ssh2 库的过时版本。从 ssh2-sftp 切换到最新 (0.5.2) 版本的 ssh2 并使用该库直接解决了该问题(可能是这个问题: https://github.com/mscdex/ssh2/issues/450 )

关于node.js - 使用 ssh2 sftp Node 读取较大的 sftp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com