views:

471

answers:

2

I'm sending a ms-word file using rails. i.e when I click on a link, a doc file from tmp folder (in project) is sent.

The code I'm using is

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

It's working, but it's sending an empty file. Content is missing in the file. Any suggestions?

+1  A: 

There is no send_file :streaming option, it is :stream. You're passing bad parameters types. :buffer_size should be number, not a string. :stream should be boolean, not string.

:stream => true,
:buffer_size => 4096,

You need only filename parameter (if you want to send file with another name than the original). Other options you are using are default (except :type).

Can you try this ?

@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename, :filename => "test.doc")
retro
A: 

Try sending with :disposition => 'inline'

send_file path, :type => 'application/msword', :disposition => 'inline'

simianarmy