yesod-examples-0.6.0: yesod/tutorial/file-echo.lhs
> {-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell #-}
> import Yesod
> import Data.Monoid (mempty)
> data Echo = Echo
> mkYesod "Echo" [$parseRoutes|
> / Homepage GET POST
> |]
> instance Yesod Echo where approot _ = ""
> getHomepage = defaultLayout $ do
> setTitle $ string "Upload a file"
> addHamlet [$hamlet|
> %form!method=post!action=.!enctype=multipart/form-data
> File name:
> %input!type=file!name=file
> %input!type=submit
> |]
> postHomepage = do
> rr <- getRequest
> (_, files) <- liftIO $ reqRequestBody rr
> fi <- maybe notFound return $ lookup "file" files
> return [(fileContentType fi, toContent $ fileContent fi)]
> main = basicHandler 3000 Echo