【问题标题】:Displaying dynamically generated images in Yesod在 Yesod 中显示动态生成的图像
【发布时间】:2011-11-01 03:29:43
【问题描述】:

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

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

【问题讨论】:

    标签: haskell yesod


    【解决方案1】:

    对于磁盘上的文件,您可以在处理程序中使用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

    【讨论】:

    • 我实际上认为在这种情况下您可以只使用“return”而不是 sendResponse,因为您不需要任何短路。另外,如果您使用的是普通 IO 函数,请记住使用 liftIO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多