2011-08-22 37 views
9

Tôi đang viết ứng dụng Yesod đầu tiên của mình. Ứng dụng liên quan đến việc người dùng chọn xem biểu đồ, được tạo động dựa trên dữ liệu được lưu trữ trong DB trên máy chủ. Tôi biết cách yêu cầu người dùng và tạo hình ảnh trên hệ thống tệp của máy chủ, nhưng làm cách nào để tạo trang phản hồi trình bày?Hiển thị hình ảnh được tạo động trong Yesod

P.S. Khi tôi đang sử dụng GnuPlot để tạo ra hình ảnh, tôi chỉ biết cách viết nó như một tệp vào hệ thống tệp, nhưng nếu bạn tình cờ biết cách lấy dữ liệu trong bộ nhớ thì có lẽ nó sẽ còn tốt hơn nữa. Cảm ơn,

Trả lời

9

Đối với tệp trên đĩa, bạn có thể sử dụng sendFile trong trình xử lý của mình.

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

Để gửi từ ByteString vào bộ nhớ, hãy sử dụng sendResponse.

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

Đảm bảo bạn chỉ định correct content type cho hình ảnh của mình.

+2

Tôi thực sự nghĩ rằng bạn chỉ có thể sử dụng "return" thay vì sendResponse trong trường hợp này, vì bạn không cần bất kỳ sự chập mạch nào. Ngoài ra, hãy nhớ sử dụng liftIO nếu bạn đang sử dụng các hàm IO bình thường. –

Các vấn đề liên quan