2011-08-22 21 views
9

私は初めてのYesodアプリケーションを書いています。 アプリケーションは、グラフを表示するためにユーザーが選択し、サーバー上のDBに格納されたデータに基づいて動的に生成されます。 私はユーザーリクエストを取得し、サーバーのファイルシステム上にイメージを作成する方法を知っていますが、それを提示するレスポンスページを作成するにはどうすればよいですか?Yesodで動的に生成された画像を表示

P.S.私はGnuPlotを使って画像を生成していますので、ファイルシステムにファイルとして書き込む方法しか分かりませんが、メモリ内のデータを取得する方法が分かっていれば、おそらくもっと良いでしょう。 ありがとう、

答えて

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を必ず指定してください。

+2

実際には、短絡が必要ないので、この場合はsendResponseの代わりに "return"を使用することができます。また、通常のIO機能を使用している場合は、liftIOを使用することを忘れないでください。 –

関連する問題