Sending a file, FTP protocol

Hello,

I was using the method send_file from an action on one of my controllers to send a file to the users. The thing is that now the file will be stored in an FTP and send_file only works with the HTTP protocol. What can I do in this situation? This is what I had that worked via HTTP:

  def get_it       send_file "http://www.elioncho.com/uploads/babe.jpg"   end

All send_file does it put the contents of a local file into your http response. If you need to get a file from an ftp server and pass it to the user I reckon you'd be better off redirecting them to the url. If you need to save a file to an ftp server you could look into Net::FTP (but that would block your mongrel for the duration of the transfer)

Fred

Hello Frederick,

Thanks for your input. In my case, the user should download the file from the ftp server and when I use a redirect to the URL the file is rendered on the browser (photo or mp3) and the URL becomes visible. My goal is to hide the URL from where the file is coming and make the user download the file locally.

Thanks again,

Elías

If the file is located on the same box as your web app you may want to try sending the path as opposed to the complete url. Just a thought:

send_file "/full/path/uploads/babe.jpg"

Although the docs say the default is to send a binary attachment it seems I had to play with the headers a bit, although i am using mod_xsendfile (tn123.ath.cx is offline) so that may have mixed things up a bit can't recall. I'm also doing:

render :nothing => true

at the end of my controller action.

Hope that helps, good luck! Tim

Thanks Tim,

The thing is the user is going to download from a FTP server so I can't use send_file.

Is the FTP server running on the same box or the same local network. If so is there some overriding reason that it has to be delivered via FTP?

Hi Tim,

The files to download are on a FTP server. The user should be able to copy a download code into a textfield and click a download button. The file should automatically begin downloading and the URL should be hidden. That's why initially I had the send_file option on a controller action (when I thought it was via HTTP)

Thanks again,

Elías