質問

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 すべてを正しくセットアップするようにルートとして。

その後、設定したいと思います XSendFileXSendFilePath Apache構成ファイルのオプション。詳細については、上記のURLのヘルプをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top