如何强制send_data在浏览器中下载文件?

Mr_*_*zle 4 ruby-on-rails amazon-s3 filestream ruby-on-rails-3

好吧,我的问题是我正在使用send_data我的Rails 3应用程序向用户发送一个来自AWS S3服务的文件

Base.establish_connection!( :access_key_id => 'my_key', :secret_access_key => 'my_super_secret_key')
s3File = S3Object.find dir+filename, "my_unique_bucket"
send_data(open(s3File.url).read,:filename=>filename, :disposition => 'attachment')
Run Code Online (Sandbox Code Playgroud)

但似乎浏览器正在缓冲文件,并且在缓冲之前将文件发送到下载,不需要时间下载,但buffering当时它只需要文件大小....但我需要的是用户查看正常下载过程,他们只会在浏览器选项卡上知道加载器发生了什么:

在此输入图像描述

他们宁愿看到一个下载过程,我想要弄清楚那里发生了什么

我有什么方法可以做到这一点send_data

Win*_*eld 6

这不是浏览器的缓冲/延迟,而是你的Ruby服务器代码.

您将从S3下载整个文件,然后将其作为附件发送回用户.

使用重定向直接从S3向您的用户提供此内容可能更好.以下是构建临时访问URL的链接,该URL允许在短时间内使用给定令牌进行下载:

http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html

Base.establish_connection!( :access_key_id => 'my_key', :secret_access_key => 'my_super_secret_key')
s3File = S3Object.find dir+filename, "my_unique_bucket"
redirect_to s3File.url(:expires_in => 30)
Run Code Online (Sandbox Code Playgroud)