【发布时间】:2015-07-19 09:34:07
【问题描述】:
我正在使用 yesod 处理文件上传,并希望将上传的文件保存到我的服务器上的文件中,该文件的名称为内容的 SHA256。
我认为处理程序级函数看起来像:
fileMove fInfo (basePath <> generateSha fInfo)
这个问题的中心是如何写generateSha :: FileInfo -> String。
我看到了一些可能有用的功能:
fileSource :: MonadResource m => FileInfo -> Source m ByteString
sha256Incremental :: Decoder SHA256State
completeSha256Incremental :: Decoder SHA256State -> Int -> Digest SHA256State
showDigest :: Digest t-> String
但我不确定一些事情:
- 如何在导管中接线。理想情况下,我会让它流式传输文件。
- 使用 SHA 接口逐步建立散列。我可以很容易地获得空字符串的 SHA256,但我不确定如何添加值。大概是解码器类型中隐藏的东西吧?
- completeSha256Incremental 的
Int参数是什么。
有人可以指出正确的方向吗?
【问题讨论】:
-
这是一个不同的实现,但我建议查看cryptohash-conduit,它建立在cryptohash 包之上(由同一作者编写)。