【问题标题】:Is there an easy way to buffer io.ReaderAt and io.WriterAt?有没有一种简单的方法来缓冲 io.ReaderAt 和 io.WriterAt?
【发布时间】:2017-09-07 23:27:57
【问题描述】:

我正在为工作中的项目实施自定义 sftp 服务器,该项目将使用 AWS 兼容系统作为后端。根据我所看到的,我想我应该使用s3.Uploader and s3.Downloaders3.PutObject and s3.GetObject 实现sftp.Handlers 接口。

我之前使用过 io.PipeReaderio.PipeWriter 将 io.Writer 传递给 io.Reader 但在这种情况下,我需要执行以下操作:

  • 获取:io.ReaderAt
  • 输入:io.WriterAt -> ??? -> io.Reader

我猜???在这两种情况下都会有所不同,但它们似乎都是一种管道,我们在其中保存数据,直到它可用于另一端。是否存在这样的事情或者我需要自己实现它?有什么实施建议吗?

【问题讨论】:

  • 为什么需要将 s3 SDK 公开为 sftp 处理程序?你觉得自己真正需要的“东西”会做什么
  • 基本上,因为企业是这么说的。我正在改造现有系统。客户希望使用 SFTP,我们无法更改。该项目的其他部分正在使用 S3 克隆,而企业希望现在将提交的内容存储在那里。
  • 至于它实际会做什么,仍然是个谜。因此问题。我猜在 Get 示例中它会从 io.Reader 读取填充缓冲区。然后它将等待 ReadAt() 调用,直到缓冲区有可用的数据来获取它。
  • 我也有同样的问题,你找到好的解决方案了吗?
  • 没有好的解决方案。我最终将传入的文件保存到磁盘,然后再将其上传到 s3。

标签: go


【解决方案1】:

我个人正在使用专门缓冲 ReadAt 的 https://github.com/avvmoto/buf-readerat。帮我减轻了很多痛苦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2013-06-01
    • 2012-06-15
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多