[Seaside] How to save a html5 canvas.toDataURL as a png file on the server

Bob N. bobn at rogers.com
Wed Jul 27 13:56:44 UTC 2011


Thanks Johan, feels like I almost have it.

I'm doing this work in VW. Could someone show the VW equivalent of
#base64Decoded? Or is it in some Seaside compatibility library? I'm using
'Seaside 3.0 - 87' from the Cincom public repository.

In VW, I see the callback value content as a String starting with
'data:image/png;base64,iVBORw...'.

I'm also trying this in Pharo to help understand the  #base64Decoded method,
but the #onClick: code is not being triggered as it is in VW...

html button
onClick: (html jQuery ajax
callback: [:value |
Transcript cr; show: 'Save button callback triggered'.
(FileStream newFileNamed: ('c:\data\sketchpad_', Time now asSeconds
printString ,'.png'))
nextPutAll: value base64Decoded]
value: (JSStream on: 'sketchpadCanvas.toDataURL()'));
with: 'Save'.

...am I missing something obvious?

I have another test button rendered that works fine...
html button
onClick: 'window.open(sketchpadCanvas.toDataURL())';
with: 'Open'.

Thanks for any help,
Bob

On Wed, Jul 27, 2011 at 4:19 AM, Johan Brichau <johan at inceptive.be> wrote:

> I also responded this on stack overflow.
>
> Depending on how you want your website to behave, I guess there are
> multiple ways of doing it. Here is the raw sample of one possibility I can
> think of using a jQuery ajax callback:
>
> html jQuery ajax
> callback: [:value | (FileStream newFileNamed: 'test.png') nextPutAll: value base64Decoded ]
> value: (JSStream on: 'canvas.toDataURL()')
>
> I did not test this myself. Maybe the filestream needs to be sent the
> #binary message to make a correct png file. Let me know if there are
> troubles.
>
> Hope it helps.
> On 26 Jul 2011, at 22:01, Bob N. wrote:
>
> (I also posted this in stack overflow)
>
> I have an image that users can annotate on the browser. I can access the
> image using
>     canvas.toDataURL()
> ...I'd like to add a 'save' option for the user to save the image on the
> server.
>
> This question has been answered for php...
>     file_put_contents('test.png', base64_decode(substr($data, strpos($data,
> ",")+1)));
> ...what I need is a Seaside callback with the PNG file contents.
>
> Is there a way to do this in Seaside?
>
> Thanks,
> Bob
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20110727/ff818913/attachment.htm


More information about the seaside mailing list