我正在使用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')
它正在运行,但它正在发送一个空文件。文件中缺少内容。有什么建议吗?
答案 0 :(得分:14)
没有send_file:流媒体选项,它是:stream。你传递了错误的参数类型。 :buffer_size应该是数字,而不是字符串。 :stream应该是boolean,而不是string。
:stream => true,
:buffer_size => 4096,
您只需要文件名参数(如果您要发送另一个名称而不是原始文件)。您使用的其他选项是默认值(除了:类型)。
你能试试吗?
@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename, :filename => "test.doc")
答案 1 :(得分:3)
注释掉config/environments/production.rb
config.action_dispatch.x_sendfile_header = "X-Sendfile"
答案 2 :(得分:0)
尝试发送:disposition => '内联'
send_file path, :type => 'application/msword', :disposition => 'inline'
答案 3 :(得分:0)
In your view =>
<%= link_to "click here to download", signed_feeds_pdf_path(:feed_image_path => feed_image.feedimage.path), target: '_self' %>
In your controller =>
def pdf
file_name = params[:feed_image_path].split('/').last
@filename ="#{Rails.root}/public/uploads/feed_image/feedimage/#{file_name}"
send_file(@filename ,
:type => 'application/pdf/docx/html/htm/doc',
:disposition => 'attachment')
end