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

編集: 1 つの問題を修正することができました。私はハンドラーを理解しようとしているようです。ここの型の問題は何ですか?? これよりもエレガントな方法はありますか?

4

1 に答える 1

1

Yesod に組み込まれているマルチパート サポートを探している場合は、手動の解析に頼る必要はありません。fileFieldまたはlookupFile の使用を検討してください。

于 2013-02-12T19:40:11.300 に答える