send_fileは空のファイルを送信するだけです
-
27-09-2019 - |
質問
XMLファイルをダウンロードする方法を探しています。私が使う:
file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"
しかし、これは常に私に空のファイルをダウンロードします。ファイル自体には16 kbのデータがあります...
何故ですか?
マエチ
解決 2
問題が救われましたが、理由はわかりません
File.open(file_path, 'r') do |f|
send_data f.read, :type => "text/xml", :filename => "10.xml"
end
send_dataは機能しています...しかし、send_fileではありません!
他のヒント
おそらくあなたはコメントしなければなりません
config.action_dispatch.x_sendfile_header = "X-Sendfile"
in production.rb
見る http://vijaydev.wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ 説明のために
Eugeneが彼の答えで言ったように、生産環境でRailsはApacheまたはNginxがX-Sendfileで実際のファイルを送信させます。の中に
config/environments/production.rbファイル。
# config.action_dispatch.x_sendfile_header = "X-Sendfile"
sendfileの使用を有効にする必要があります ./config/environments/production.rb
:
config.action_dispatch.x_sendfile_header = "X-Sendfile"
この行が存在しない(またはコメントアウトされている)場合、RailsはApacheではなくファイルを正しく送信します。
0バイトファイルを取得している場合は、インストールしていることを確認してください mod_xsendfile
, 、から利用できます https://tn123.org/mod_xsendfile
単一のソースファイルをダウンロードします(mod_xsendfile.c
)そしてそれをコンパイルします(apxs -cia mod_xsendfile.c
)。おそらく走りたいです apxs
すべてを正しくセットアップするようにルートとして。
その後、設定したいと思います XSendFile
と XSendFilePath
Apache構成ファイルのオプション。詳細については、上記のURLのヘルプをご覧ください。