在Yesod中显示动态生成的图像

时间:2011-08-22 12:57:11

标签: haskell yesod

我正在写我的第一个Yesod应用程序。 该应用程序涉及用户选择查看图表,该图表是基于存储在服务器上的DB中的数据动态生成的。 我知道如何获取用户请求并在服务器的文件系统上创建映像,但是如何创建一个呈现它的响应页面呢?

P.S。当我使用GnuPlot生成图像时,我只知道如何将其作为文件写入文件系统,但如果你碰巧知道如何在内存中获取数据,它可能会更好。 谢谢,

1 个答案:

答案 0 :(得分:9)

对于磁盘上的文件,您可以在处理程序中使用sendFile

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

要从内存中的ByteString发送,请使用sendResponse

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

确保为图片指定correct content type