> {-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses #-} > import Yesod > import Data.Monoid (mempty) > import qualified Data.ByteString.Char8 as S8 > 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 > (_, files) <- runRequestBody > fi <- maybe notFound return $ lookup "file" files > return [(S8.pack $ fileContentType fi, toContent $ fileContent fi)] > main = warpDebug 3000 Echo