在rails中使用send_file

sgi*_*sgi 11 ruby-on-rails

我正在使用rails发送一个ms-word文件.即,当我点击链接时,会发送来自tmp文件夹(在项目中)的doc文件.

我正在使用的代码是

@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename ,
            :filename      =>  "test",
            :type          =>  'application/msword',
            :disposition  =>  'attachment',
            :streaming    =>  'true',
        :buffer_size  =>  '4096')
Run Code Online (Sandbox Code Playgroud)

它正在工作,但它正在发送一个空文件.文件中缺少内容.有什么建议?

ret*_*tro 14

没有send_file:streaming选项,它是:stream.你传递了错误的参数类型.:buffer_size应该是数字,而不是字符串.:stream应该是boolean,而不是string.

:stream => true,
:buffer_size => 4096,
Run Code Online (Sandbox Code Playgroud)

您只需要filename参数(如果您要发送另一个名称而不是原始文件).您使用的其他选项是默认选项(除了:type).

你能试试吗?

@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename, :filename => "test.doc")
Run Code Online (Sandbox Code Playgroud)