I am trying to send data from a remote file attachment....
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 << "<value><base64>#{ tmp_data }</base64></value>" ...
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 ?
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
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)
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) }”