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:
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)
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.
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:
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)