Here's what you basically do:

        require 'rexml/document'
        require 'base64'

        filename = 'file.dat'
        xml = '... contents of test.xml ...'

        doc = REXML::Document.new(xml)
        str = 
doc.root.elements['Sheet1'].elements['PhotoTaken1'].text.gsub(/\s+/, '')

        File.open(filename, 'wb') { |f| f.write Base64.decode64(str) }

In case of Paperclip::Processor, you will need to read the contents of the 
uploaded file and output the decoded contents into a temp file. Here's a good 
link to see how processors are built: 
http://mdeering.com/posts/018-paperclip-processors-doing-so-much-more-with-your-attachment

Also, I just checked the contents of the encoded data and it doesn't appear to 
be an image, so... just be warned. Check it in the hex editor when decoded. 
You'll see what I mean.

To put it back into XML, just read the contents of the saved Paperclip file, 
encode it (Base64.encode64) and put it back into the XML tag (see creating 
documents with REXML).

- A

On 02/09/2010, at 12:59 PM, John Butler wrote:

> Ok thanks, i did read about using Base64 to decode it but my main issue 
> is as you say understanding
> what format it was decoded in the first place.  Please find a sample 
> attached
> 
> thanks
> 
> JB
> 
> 
> 
> Aleksey Gureiev wrote:
>> How the image is encoded into XML? Can you give an example?
>> 
>> Is it a CDATA section with Base64 or something else? If it's a known
>> encoding, you just read it as an attribute / tag value and then decode
>> using an appropriate decoder, then open the file in binary mode and
>> save the decoded version there. If it's paperclip that accepts the
>> XML, there's such thing as processors that you can use to write a
>> processor that extracts the image and replaces the original XML file
>> with the extracted thing.
>> 
>> In order to put the image back into XML, again you use the encoder
>> (Base64, for example) and put the resulting value inside the tag.
>> 
>> Again, if you give a sample XML, I may be able to give more precise
>> suggestions.
>> 
>> Cheers,
>> - A
> 
> 
> Attachments:
> http://www.ruby-forum.com/attachment/4995/test.xml
> 
> -- 
> Posted via http://www.ruby-forum.com/.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
> 

Attachment: PGP.sig
Description: This is a digitally signed message part

Reply via email to