我正在写我的第一个Yesod应用程序。 该应用程序涉及用户选择查看图表,该图表是基于存储在服务器上的DB中的数据动态生成的。 我知道如何获取用户请求并在服务器的文件系统上创建映像,但是如何创建一个呈现它的响应页面呢?
P.S。当我使用GnuPlot生成图像时,我只知道如何将其作为文件写入文件系统,但如果你碰巧知道如何在内存中获取数据,它可能会更好。 谢谢,
答案 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。