首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ssh2-sftp-client获取多个文件-错误“结束后写入”

ssh2-sftp-client获取多个文件-错误“结束后写入”
EN

Stack Overflow用户
提问于 2019-01-28 02:42:57
回答 2查看 370关注 0票数 0

我试图从ftp加载多个文件,但我得到错误:“写入后结束”。我找不到问题所在。

connections.js

代码语言:javascript
复制
async function getFtpFileContent(_path) {
  const ftpConfig = {
    host: config.FTPhost.replace('https://', ''),
    username: config.FTPusername,
    password: config.FTPpassword
  };
  let ftpFileContent;
  let sftp = new StfpClient();
  try {
    await sftp.connect(ftpConfig);
    const stream = await sftp.get(_path);
    ftpFileContent = await readStream(sftp, stream);
    stream.close();
    await sftp.end();
  } catch (error) {
    console.log('FTP Error: \n', error);
  }

  return ftpFileContent;
}


function readStream(sftp, stream) {
  return new Promise((resolve, reject) => {
    let body;
    stream.on('data', chunk => {
      body += chunk;
    });
    stream.on('end', () => {
      resolve(body);
    });
    stream.on('error', err => reject(err));
  });
}

调用下一个方法:

代码语言:javascript
复制
async function getFiles(req, res) {
  // first file
  let fileContent = await conn.getFtpFileContent(filePath);

  // second file
  let fileContent2 = await conn.getFtpFileContent(filePath2);
}

当我第二次调用方法getFtpFileContent时,我得到了前面提到的错误(“结束后写入”)。

你能帮帮我吗?我在哪里做错了?

EN

回答 2

Stack Overflow用户

发布于 2019-01-28 10:09:58

我不知道您的问题出在哪里,但是您是否应该在getFtpFileContent函数中调用stream.close()?我没有看到任何关于流的close方法,只有close事件。

票数 0
EN

Stack Overflow用户

发布于 2019-01-28 20:26:18

我找到问题了。问题出在我后来使用的CSV转换器中。转换器使用的是可写流,该流在转换后未关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54391624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档