{-# LANGUAGE OverloadedStrings , UnicodeSyntax #-} import qualified Data.ByteString.Lazy.Char8 as Lazy import Control.Applicative import qualified Data.Collections as C import Control.Monad.Unicode import Data.Maybe import Data.Monoid.Unicode import Network import Network.HTTP.Lucu import Prelude.Unicode main ∷ IO () main = let config = defaultConfig { cnfServerPort = "9999" } tree ∷ ResourceTree tree = C.fromList [ ([], nonGreedy resMain) ] in do putStrLn "Access http://localhost:9999/ with your browser." withSocketsDo ∘ runHttpd config $ resourceMap tree resMain ∷ Resource resMain = C.fromList [ ( GET , do setContentType $ parseMIMEType "text/html" putChunks $ "Multipart Form Test\n" ⊕ "
\n" ⊕ " Upload some file:\n" ⊕ " \n" ⊕ " \n" ⊕ " \n" ⊕ "
\n" ) , ( POST , do form ← getForm Nothing let text = fromMaybe (∅) $ fdContent <$> lookup "text" form file = fromMaybe (∅) $ fdContent <$> lookup "file" form fileName = fdFileName =≪ lookup "file" form setContentType $ parseMIMEType "text/plain" putChunks $ "You entered \"" ⊕ text ⊕ "\".\n" putChunks $ "You uploaded a " ⊕ Lazy.pack (show $ Lazy.length file) ⊕ " bytes long file.\n" putChunks $ "The file name is " ⊕ Lazy.pack (show fileName) ⊕ ".\n" ) ]