Forum: Ruby on Rails question about creating a link to download

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ed8a168d9dcb0072438c535b23bc8f38?d=identicon&s=25 Jay Dev (mercuryguy)
on 2009-03-25 19:54
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!!
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-03-25 20:05
(Received via mailing list)
On Mar 25, 6:54 pm, Jay Dev <rails-mailing-l...@andreas-s.net> 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
Ed8a168d9dcb0072438c535b23bc8f38?d=identicon&s=25 Jay Dev (mercuryguy)
on 2009-03-25 20:11
Thanks for the reply.

The exe file is on another server.

Thanks!

Frederick Cheung wrote:
> On Mar 25, 6:54�pm, Jay Dev <rails-mailing-l...@andreas-s.net> 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
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-03-25 21:17
(Received via mailing list)
On Mar 25, 7:11 pm, Jay Dev <rails-mailing-l...@andreas-s.net> 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
Ed8a168d9dcb0072438c535b23bc8f38?d=identicon&s=25 Jay Dev (mercuryguy)
on 2009-03-25 21:54
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-...,
    :filename => 'ubuntu-8.10-desktop-i386.iso' ,
    :type => 'application/force-download',
    :disposition => 'attachment')
  end
0c31801aba0747b84974df56ade208f3?d=identicon&s=25 robdoan (Guest)
on 2009-03-27 12:50
(Received via mailing list)
On Mar 26, 3:54 am, Jay Dev <rails-mailing-l...@andreas-s.net> wrote:
>   end
> --
> Posted viahttp://www.ruby-forum.com/.


Try using send_file function :)
http://apidock.com/rails/ActionController/Streamin...
059ed46172a087063ce26250e44c8627?d=identicon&s=25 Fernando Perez (fernando)
on 2009-03-27 14:12
Jay Dev 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.
This topic is locked and can not be replied to.