rails作为远程文件下载的代理

时间:2012-12-22 18:11:44

标签: ruby-on-rails proxy

我正在使用rails应用程序example.com。我正在为任何类型的文件(视频,图像......)使用云存储提供程序。 不,我想在不暴露实际存储位置的URL的情况下使它们可供下载。 所以我在想一种代理。一个简单的控制器,看起来像这样:

data = open(params[:file])
filename = "#{RAILS_ROOT}/tmp/my_temp_file"

File.open(filename, 'r+') do |f|
  f.write data.read
end

send_file filename, ...options...

(代码取自a link)。

重点是我必须先下载文件。 所以我想知道是否可以立即流式传输文件,而无需先从云存储中下载。

最好

菲利普

1 个答案:

答案 0 :(得分:1)

前一段时间我正在处理这个问题并得出结论,如果不必将文件下载到服务器然后将其传递给客户端就不可能实现这一点。 我建议您生成一个已签名,过期的下载链接,只要用户点击您网页上的下载链接,您就会将其插入到隐藏的iframe中。通过这种方式,他们将获得从您的页面下载的经验,而不会使文件不必要地往返于您的服务器。