Yesod有以下类型签名的rawRequestBody
:
rawRequestBody :: MonadHandler m => Source m ByteString
http-conduit具有将源转换为RequestBody
的功能:
requestBodySource :: Int64 -> Source (ResourceT IO) ByteString -> RequestBody
我希望能够通过将其转换为处理程序内的RequestBody
将rawRequestBody
流式传输到S3对象,ResourceT IO ~ MonadHandler
不计算,我似乎无法做MonadHandler m => m -> ResourceT IO
我试过:
transPipe
-如果我们从rawRequestBody
得到Source Handler ByteString
,那么得到ByteString
的唯一方法似乎是consume
它,即
transPipe ??? rawRequestBody :: Source (ResourceT IO) ByteString
handlerToIO
-然而,似乎请求体被清除,因此不会有任何可用的数据
请帮忙:)
函数waiRequest将返回WAI请求值。你可以使用sourceRequestBody来获取Source
。