【发布时间】:2016-06-03 23:23:12
【问题描述】:
我正在尝试调整这个AWS S3 upload code 来处理长度已知的Lazy ByteString(这样它就不会被强制在内存中全部读取——它会通过预先发送长度的网络来传输)。看来我必须在Lazy ByteString 上定义一个GivesPopper 函数才能将其转换为RequestBodyStream。由于定义了GivesPopper 的复杂方式,我不确定如何为Lazy ByteString 编写它。将欣赏有关如何编写它的指针。 Here 是从文件中读取的写法:
let file ="test"
-- streams large file content, without buffering more than 10k in memory
let streamer sink = withFile file ReadMode $ \h -> sink $ S.hGet h 10240
如果我理解正确,上面代码中的streamer 是GivesPopper () 类型。
给定一个已知长度len 的Lazy ByteString,在它上面写GivesPopper 函数的好方法是什么?我们可以一次读取一个块。
【问题讨论】:
标签: haskell bytestring http-conduit