2011-08-22 10 views
9

Escribo mi primera aplicación Yesod. La aplicación implica que el usuario seleccione para ver un gráfico, generado dinámicamente en base a los datos almacenados en una base de datos en el servidor. Sé cómo obtener la solicitud del usuario y crear la imagen en el sistema de archivos del servidor, pero ¿cómo creo una página de respuesta que la presente?Visualización de imágenes generadas dinámicamente en Yesod

P.S. Como estoy usando GnuPlot para generar la imagen, solo sé cómo escribirla como un archivo en el sistema de archivos, pero si sabe cómo obtener los datos en la memoria, probablemente sea aún mejor. Gracias,

Respuesta

9

Para un archivo en disco, puede usar sendFile en su controlador.

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

Para enviarlo desde un ByteString en la memoria, utilice sendResponse.

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

Asegúrese de especificar el correct content type para su imagen.

+2

De hecho, creo que podría usar "return" en lugar de sendResponse en este caso, ya que no necesita ningún cortocircuito. Además, recuerde usar liftIO si está usando funciones normales de IO. –

Cuestiones relacionadas