2011-08-22 14 views
9

Sto scrivendo la mia prima app Yesod. L'applicazione prevede che l'utente selezioni di visualizzare un grafico, generato dinamicamente in base ai dati memorizzati in un DB sul server. So come ottenere la richiesta dell'utente e creare l'immagine sul file system del server, ma come posso creare una pagina di risposta presentandola?Visualizzazione di immagini generate dinamicamente in Yesod

P.S. Poiché sto usando GnuPlot per generare l'immagine, so solo come scriverlo come file nel file system, ma se sapessi come ottenere i dati in memoria probabilmente sarà ancora meglio. Grazie,

risposta

9

Per un file su disco, è possibile utilizzare sendFile nel gestore.

getImageR = do 
    -- ... save image data to disk somewhere 
    sendFile typeJpeg "/path/to/file.jpg" 

Per l'invio da una ByteString in memoria, utilizzare sendResponse.

getImageR = do 
    bytes <- -- generate image data 
    sendResponse (typePng, toContent bytes) 

Assicurarsi di specificare correct content type per l'immagine.

+2

Penso che in questo caso si possa semplicemente utilizzare "return" anziché sendResponse, poiché non è necessario alcun cortocircuito. Inoltre, ricorda di usare liftIO se stai usando normali funzioni IO. –

Problemi correlati