Question about creating a link to download


#1

Hi Folks,

I’m new to Rails and working on a project where after the user logs in
they can click on a link to download an exe file ( say for example the
file is at http://test.com/test.exe). I want to keep the link to the exe
file hidden. What are the best ways to implement this step.

I was thinking about using the redirect to url but I have been getting
an error saying that I cannot use two redirect’s in a function.

Also, I was thinking of using NET:HTTP to use http request but I have no
idea how to implement this.

Thanks!!


#2

On Mar 25, 6:54 pm, Jay D. removed_email_address@domain.invalid wrote:

Hi Folks,

I’m new to Rails and working on a project where after the user logs in
they can click on a link to download an exe file ( say for example the
file is athttp://test.com/test.exe). I want to keep the link to the exe
file hidden. What are the best ways to implement this step.

I was thinking about using the redirect to url but I have been getting
an error saying that I cannot use two redirect’s in a function.

redirect won’t hide the url

Also, I was thinking of using NET:HTTP to use http request but I have no
idea how to implement this.

You could but it would block the mongrel for the entire time it took
to download the file.

What’s not clear from your example is whether this file is on your
server or somewhere else.

Fred


#3

Thanks for the reply.

The exe file is on another server.

Thanks!

Frederick C. wrote:

On Mar 25, 6:54�pm, Jay D. removed_email_address@domain.invalid wrote:

Hi Folks,

I’m new to Rails and working on a project where after the user logs in
they can click on a link to download an exe file ( say for example the
file is athttp://test.com/test.exe). I want to keep the link to the exe
file hidden. What are the best ways to implement this step.

I was thinking about using the redirect to url but I have been getting
an error saying that I cannot use two redirect’s in a function.

redirect won’t hide the url

Also, I was thinking of using NET:HTTP to use http request but I have no
idea how to implement this.

You could but it would block the mongrel for the entire time it took
to download the file.

What’s not clear from your example is whether this file is on your
server or somewhere else.

Fred


#4

On Mar 25, 7:11 pm, Jay D. removed_email_address@domain.invalid wrote:

Thanks for the reply.

The exe file is on another server.

OK. I was asking because if on the same server then things like X-Send-
File or X-Accel-Redirect work very nicely. You certainly could use net/
http to get the file and then send the response to the user although
for anything but the smallest of files you’ll need to start sending
the data before you have grabbed all of it (because otherwise the user
will get bored or the browser will time you out) and I’m not sure
there’s a nice way of doing that in rails.

Fred


#5

On Mar 26, 3:54 am, Jay D. removed_email_address@domain.invalid wrote:

end

Posted viahttp://www.ruby-forum.com/.

Try using send_file function :slight_smile:
http://apidock.com/rails/ActionController/Streaming/send_file


#6

Jay D. wrote:

Hi Folks,

I’m new to Rails and working on a project where after the user logs in
they can click on a link to download an exe file ( say for example the
file is at http://test.com/test.exe). I want to keep the link to the exe
file hidden. What are the best ways to implement this step.
You can make an expirable link à -la Rapidshare, and/or use
X-Accel-Redirect provided by Nginx, we use the latter to stream VOD.


#7

This is an example.

I tried this below code but it blocks mongrel until the whole file is
read which is over 500 MB.

def download
send_data(open(‘http://mirrors.gigenet.com/ubuntu/intrepid/ubuntu-8.10-desktop-i386.iso’).read,
:filename => ‘ubuntu-8.10-desktop-i386.iso’ ,
:type => ‘application/force-download’,
:disposition => ‘attachment’)
end