How to send raw data from a temp file as a base64 value?

I am trying to send data from a remote file attachment…

attachment[‘url’] = “http://www.mydomain.com/resource/download/54643

I wrote a class RemoteFile < ::Tempfile to fetch to remote data

remote_file = RemoteFile.new(attachment[‘url’] )
so, I get a tempfile

#<File:/var/folders/NK/NKfWCW3eEVCg0ERnpPsnME+++TI/-Tmp-/
93806edfbb0daf7303347d7faaffc2d0f5b22a1d20100914-5545-1y66mt8-0>

now I would like to pass the content of this temp file as a base64
value

ticketing_xml << “#{ tmp_data }”

how should I do write the tmp_data ?

should I use : open(remote_file ).read

thanks for your suggestions

now I would like to pass the content of this temp file as a base64
value

ticketing_xml << “#{ tmp_data }”

how should I do write the tmp_data ?

should I use : open(remote_file ).read

Sure. If these remote files are big, your Rails processes are going to
eat a lot of ram.

Instead of reading things into a temp file first, look into open-uri so
you can simply read it directly from the remote host into your xml
string…

-philip

Thanks Philip, this is better … it seems a little bit more
complicated that I thought

I need to get a file that I download from this url… this not the
file url, but an html page to download the file
attachment[‘url’] :: “http://www.pivotaltracker.com/resource/download/
579633”

and then pass the encoded content of the downloaded file as data
into the xml , so it’ll become an attachment for another ticketing
system…

=>, the open(remote_file ).read doesn’t give me the file, but the
html…

so, I need to to :
1 - ‘execute’ Pivotal Tracker - Sign in
to get and store the file locally
2- read the file locally , encode it and pass the content as a value
in the xml

any idea on how to do that ?

I maybe am not understanding what you need, but if you are trying to do
this
where you have tmp_data in memory and need to encode tmp_data

ticketing_xml << “#{ tmp_data }”

Then do

require ‘base64’
ticketing_xml << “#{ Base64.encode64(tmp_data)
}”

On Sep 14, 2010, at 3:00 PM, Erwin wrote:

system…

=>, the open(remote_file ).read doesn’t give me the file, but the
html…

so, I need to to :
1 - ‘execute’ Pivotal Tracker - Sign in
to get and store the file locally

I’m not understanding what this step means… I’ve never used
pivotaltracker though… does going to that page result in a file being
downloaded? Is the download the HTTP response? Or triggered somehow
else? If it’s the response open-uri should be able to handle it. I
don’t recall how well open-uri handles redirects so double check that.

-p

Hi Philip

this url is a route to Pivotal web app…
when I use “Pivotal Tracker - Sign in
in my browser, I get a corresponding file attachment downloaded…
so, this is an url to Pivotal web app, which execute the
action :download in the controller Resource send the file … which
open in my browser

so I cannot use this url as a file location url (with open-uri ) and
I don’t get the file location …
seems to be redirected to an amazon S3 location where the file is
located… ( yes, the response is You have been redirected blah
blah)