0
我很難將POST響應(多部分)分開,應該如何將發送到Yesod服務器的某些文件的內容放入數據庫(在進一步處理之後)。我目前的代碼:將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
編輯:管理修復一個問題,似乎我正在理解處理程序的方式。這裏的類型有什麼問題?有沒有比這更完美的方式來完成這件事?
非常感謝。似乎我得到正確的信息最麻煩。 – user2054578 2013-02-12 20:06:24
好的,但是當我在處理程序中使用fInfo < - lookupFiles時,它需要一個額外的文本參數。如果我追加「文件名」(作爲POST參數名稱),我得到一個空列表。 – user2054578 2013-02-13 08:56:59
我無法解釋爲什麼發生這種情況時不知道請求的細節,但應完全支持文件上傳。如果有問題,那麼你應該提交一份錯誤報告。 – 2013-02-13 09:48:33