+import qualified Data.ByteString.Lazy.Char8 as L8
import Data.List
import Data.Maybe
import Network
resources = mkResTree [ ([], resMain) ]
in
do putStrLn "Access http://localhost:9999/ with your browser."
- runHttpd config resources
+ runHttpd config resources []
resMain :: ResourceDef
= Just $ do setContentType $ read "text/html"
output ("<title>Multipart Form Test</title>" ++
"<form action=\"/\" method=\"post\" enctype=\"multipart/form-data\">" ++
- " Enter some value:" ++
- " <input type=\"text\" name=\"val\">" ++
+ " Upload some file:" ++
+ " <input type=\"text\" name=\"text\">" ++
+ " <input type=\"file\" name=\"file\">" ++
" <input type=\"submit\" value=\"Submit\">" ++
"</form>")
, resHead = Nothing
, resPost
= Just $ do form <- inputForm defaultLimit
- let value = fromMaybe "" $ fmap snd $ find ((== "val") . fst) form
+ let text = fromMaybe L8.empty $ fmap fdContent $ find ((== "text") . fdName) form
+ file = fromMaybe L8.empty $ fmap fdContent $ find ((== "file") . fdName) form
+ fileName = fdFileName =<< find ((== "file") . fdName) form
setContentType $ read "text/plain"
- output ("You entered: " ++ value)
+ outputChunk ("You entered \"" ++ L8.unpack text ++ "\".\n")
+ outputChunk ("You uploaded a " ++ show (L8.length file) ++ " bytes long file.\n")
+ output ("The file name is " ++ show fileName ++ ".\n")
, resPut = Nothing
, resDelete = Nothing
}
\ No newline at end of file