send_file错误:ActionController :: MissingFile - 无法读取文件 - 来自S3

时间:2016-08-31 02:10:49

标签: ruby-on-rails ruby-on-rails-4 amazon-s3

在S3上为csv文件生成一个presigned_url。如果我将网址放在浏览器中,它会打开而没有任何问题。

我希望用户能够点击链接,并在不触及服务器的情况下将文件下载到他们的计算机上。

以下因错误而失败:

ActionController::MissingFile at /foo/1/download
Cannot read file FILE_URL

class FooController < ApplicationController

  def download
    @foo = Foo.find_by( id: params[:id] )
    send_file( @foo.url, filename: @foo.filename )
  end

end

此重定向无问题,文件显示在浏览器中。

class FooController < ApplicationController

  def download
    @foo = Foo.find_by( id: params[:id] )
    redirect_to @foo.url
  end

end

1 个答案:

答案 0 :(得分:4)

要从s3下载文件,您需要使用send_data而不是send_files

请参阅此answer以获取完整示例