Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails作为远程文件下载的代理_Ruby On Rails_Proxy - Fatal编程技术网

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

Ruby on rails rails作为远程文件下载的代理,ruby-on-rails,proxy,Ruby On Rails,Proxy,我在example.com上有一个rails应用程序。我正在为任何类型的文件(视频、图像等)使用云存储提供商。 不,我希望在不公开实际存储位置的url的情况下使它们可供下载。 所以我想到了一种代理。一个简单的控制器,可以如下所示: data = open(params[:file]) filename = "#{RAILS_ROOT}/tmp/my_temp_file" File.open(filename, 'r+') do |f| f.write data.read end send

我在example.com上有一个rails应用程序。我正在为任何类型的文件(视频、图像等)使用云存储提供商。 不,我希望在不公开实际存储位置的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...
(代码取自)

重点是我必须先下载文件。 因此,我想知道是否有可能在不首先从云存储下载的情况下立即流式传输文件

最好的
philip

我不久前正在研究这个问题,并得出结论,如果不将文件下载到您的服务器,然后按照您的说法将其传递到客户端,这是不可能的。
我建议您生成一个已签名、过期的下载链接,每当用户单击页面上的下载链接时,您都可以将该链接插入到隐藏的iframe中。通过这种方式,他们将获得从您的页面下载的体验,而不会让文件不必要地往返到您的服务器。

嗨,Nihuepana,我不确定这是否是不可能的。我认为可能有一个使用tcpsocket的解决方案,但这在webrick中不起作用。请在这里读