0

我正在努力将 POST 响应(多部分)分开,应该使用什么将发送到 Yesod 服务器的某些文件的内容放入数据库(经过进一步处理后)。我当前的代码:

import qualified Data.ByteString.Lazy as LZ
import qualified Data.ByteString.Lazy.Char8 as LC
...
processLines :: String -> [String] -> String
processLines delim (l:rest) = do
    case l of
        delim -> ""
        _     -> l ++ "\n" ++ processLines delim rest

processFile :: [String] -> String
processFile (delim:some:other:line:txt) = processLines delim txt

postImpexR :: SystemsId -> Handler RepPlain
postImpexR sysid = do
    wr <- waiRequest
    bss <- lift $ requestBody wr $$ consume
    let file = LZ.fromChunks bss
    return $ RepPlain $ toContent $ processFile $ map LC.unpack $ LC.lines file

编辑:设法解决了一个问题,似乎我正在了解处理程序。这里的类型有什么问题?有没有比这更优雅的方法来完成这项工作?

4

1 回答 1

1

如果您正在寻找 Yesod 内置的多部分支持,则无需求助于手动解析。考虑使用fileFieldlookupFile

于 2013-02-12T19:40:11.300 回答