Использование send_file в рельсах - PullRequest
11 голосов
/ 18 апреля 2010

Я отправляю файл ms-word, используя rails. т.е. когда я нажимаю на ссылку, отправляется файл документа из папки tmp (в проекте).

Я использую код

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

Работает, но отправляет пустой файл. Содержимое отсутствует в файле. Есть предложения?

Ответы [ 4 ]

14 голосов
/ 18 апреля 2010

Нет send_file : опция потоковой передачи, это: stream. Вы передаете неправильные типы параметров. : buffer_size должен быть числом, а не строкой. : поток должен быть логическим, а не строкой.

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

Вам нужен только параметр имени файла (если вы хотите отправить файл с другим именем, чем оригинал). Другие используемые вами параметры являются настройками по умолчанию (кроме: type).

Вы можете попробовать это?

@filename ="#{RAILS_ROOT}/tmp/test/test.doc"
send_file(@filename, :filename => "test.doc")
3 голосов
/ 14 июня 2011

закомментируйте следующую строку в config/environments/production.rb

config.action_dispatch.x_sendfile_header = "X-Sendfile"
0 голосов
/ 20 ноября 2014
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
0 голосов
/ 19 апреля 2010

Попробуйте отправить с помощью: disposition => 'inline'

send_file path, :type => 'application/msword', :disposition => 'inline'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...