]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - examples/Multipart.hs
Code clean-up (and close ditz/lucu-1)
[Lucu.git] / examples / Multipart.hs
index e68bb396e5b292814845f7849af70995f0f35546..3897dfb2a1f62359c44206c113ba60cf0314b5e4 100644 (file)
@@ -1,10 +1,10 @@
+import qualified Data.ByteString.Lazy.Char8 as L8
 import Data.List
 import Data.Maybe
-import Network
 import Network.HTTP.Lucu
 
 main :: IO ()
-main = let config    = defaultConfig { cnfServerPort = PortNumber 9999 }
+main = let config    = defaultConfig { cnfServerPort = "9999" }
            resources = mkResTree [ ([], resMain) ]
        in
          do putStrLn "Access http://localhost:9999/ with your browser."
@@ -20,16 +20,21 @@ resMain
           = 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