Ruby on Rails中的批量下载

时间:2011-01-25 14:29:58

标签: ruby-on-rails

我有一个Ruby on Rails应用程序,我想知道批量下载的最佳方法是什么?在任何给定的时间我都有一组指向我希望我的用户能够下载的文件的URL,但是基于对我的用户完成的那些文件的搜索,我希望他们能够下载一个子集这些文件,比如搜索结果,在一个过程中,而不是让他们单独下载它们。这组文件可能有数千个。我真正的问题是,基于一系列URL,如何让我的应用程序立即下载整个集合?我当然做了一些谷歌搜索,我想出了下面的解决方案。它似乎对我不起作用,但它似乎适用于那些发布它作为类似问题的解决方案的人。任何和所有输入将不胜感激。

# controller code
def download
   for n in 0..(@urls.length - 1)
      send_file(@urls[n], :type => "video/quicktime", 
                          :filename => @urls[n].basename, 
                          :disposition => "attachment")
   end
end

# view code
<%= link_to 'Download them all', :controller => 'my_controller', 
                                 :action => 'download' %>

1 个答案:

答案 0 :(得分:1)

在我看来,这种方法会占用大量内存,尤其是每个用户一次下载1000个文件。也许相反,你应该在他们点击链接后将文件在后台压缩,然后将其发送给用户或通过电子邮件发送给他们ZIP的位置。它仍然会使用大量内存来压缩许多文件,因此可能将该任务卸载到另一台服务器上会很好。