2011-08-22 4 views
9

첫 번째 Yesod 앱을 쓰고 있습니다. 응용 프로그램은 그래프를보기 위해 사용자가 선택하고 서버의 DB에 저장된 데이터를 기반으로 동적으로 생성됩니다. 사용자의 요청을 받고 서버의 파일 시스템에서 이미지를 만드는 방법을 알고 있지만이를 제시하는 응답 페이지는 어떻게 만듭니 까?Yesodod에서 동적으로 생성 된 이미지 표시

P. 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를 사용해야합니다. –

관련 문제