Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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服务器从AmazonS3下载一个大文件_Ruby On Rails_Amazon S3_Download - Fatal编程技术网

Ruby on rails 如何通过Rails服务器从AmazonS3下载一个大文件

Ruby on rails 如何通过Rails服务器从AmazonS3下载一个大文件,ruby-on-rails,amazon-s3,download,Ruby On Rails,Amazon S3,Download,我想从S3读取一个文件的内容并将其传递给用户。我有很大的文件,所以我不能等到它保存到我的服务器上,然后使用*x_send_file*将其发送到浏览器,因为这需要花费很多时间。我想在服务器上下载内容时将其发送到浏览器 因此,它就像某种流式下载一样通过我的服务器。是的,这是可能的-只需使用Rails获取远程文件,并将其临时存储在服务器上或直接从缓冲区发送即可。当然,问题是您需要先获取文件,然后才能将其提供给用户。有关讨论,请参见,他们的解决方案如下: #environment.rb require

我想从S3读取一个文件的内容并将其传递给用户。我有很大的文件,所以我不能等到它保存到我的服务器上,然后使用*x_send_file*将其发送到浏览器,因为这需要花费很多时间。我想在服务器上下载内容时将其发送到浏览器


因此,它就像某种流式下载一样通过我的服务器。

是的,这是可能的-只需使用Rails获取远程文件,并将其临时存储在服务器上或直接从缓冲区发送即可。当然,问题是您需要先获取文件,然后才能将其提供给用户。有关讨论,请参见,他们的解决方案如下:

#environment.rb
require 'open-uri'

#controller
def index
  data = open(params[:file])
  send_data data, :filename => params[:name], ...
end

我用的是右腿。我试过这个:
s3=RightAws::S3Interface.new(aws\u access\u key,aws\u secret\u key,:port=>80,:protocol=>“http”)file=file.new('large.file','wb')res=s3.get(bucket\u name,file\u name)do | chunk | file.write(chunk)end
。我可以分块下载文件,但如何将其作为一个文件实时发送到浏览器?我将如何同步它?有什么想法吗?任何帮助都将不胜感激!谢谢我将文件分块下载到服务器上的一个线程中。如何将数据发送到客户端,直到线程完成?我试图发送文件,但它只发送了一小部分。我需要它不断发送,直到整个文件下载到服务器。这能做到吗?我是否可以请求文件的字节范围小于同时下载到服务器上的文件的字节范围?如果需要锁定rails进程,则使用x_send_file没有任何好处,您还可以返回一个迭代器并设置标题,以便浏览器知道它需要下载文件,而不是内联地呈现它()。但是,您可能不想用这种操作锁定rails进程,请尝试考虑一个选项,让客户端直接从S3mZaragoza下载文件,请重新考虑所有“代码格式”建议您正在进行的编辑。它们不适合使用代码块标记。请参阅。您为什么选择忽略@Michael的建议?将其标记为版主注意。这些编辑完全没有意义,其他人必须进行清理,以便您获得声誉积分。