13

xml ファイルをダウンロードする方法を探しています。私が使う:

file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"

しかし、これは常に空のファイルをダウンロードします。ファイル自体には 16 KB のデータが含まれています...

何故ですか?

前地

4

5 に答える 5

24

おそらくあなたはコメントアウトする必要があります

config.action_dispatch.x_sendfile_header = "X-Sendfile"

production.rbで

説明についてはhttp://vijaydev.wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/を参照してください

于 2010-12-23T10:14:44.600 に答える
4

問題は保存されましたが、理由がわかりません

File.open(file_path, 'r') do |f|
  send_data f.read, :type => "text/xml", :filename => "10.xml"
end

send_data は機能していますが、send_file は機能していません!

于 2010-08-11T07:26:05.483 に答える
4

Eugene が彼の回答で述べているように、本番環境では、Rails は Apache または nginx に x-sendfile を使用して実際のファイルを送信させます。これらのいずれもレールのインフラストラクチャとして使用しない場合は、提案された行をコメントアウトする必要があります。の中に

config/environments/production.rb ファイル。

# config.action_dispatch.x_sendfile_header = "X-Sendfile"
于 2011-02-22T16:19:42.117 に答える
3

次の場所でsendfileの使用を有効にする必要があります./config/environments/production.rb

config.action_dispatch.x_sendfile_header = "X-Sendfile"

この行が存在しない(またはコメントアウトされている)場合、Railsはファイルを正しく送信しますが、Apacheを介しては送信しません。

0バイトのファイルを取得している場合は、 https://tn123.org/mod_xsendfilemod_xsendfileから入手できるがインストールされていることを確認してください。

単一のソースファイルをダウンロードして(mod_xsendfile.c)、コンパイルします(apxs -cia mod_xsendfile.c)。apxsすべてが正しくセットアップされるように、rootとして実行することをお勧めします。

次に、Apache構成ファイルでXSendFileとオプションを設定します。XSendFilePath詳細については、上記のURLのヘルプを参照してください。

于 2012-02-21T07:21:58.710 に答える
0

私の場合、同じことが起こりました。ファイルを送信して削除していました。
ここのように

File.open(file_path, 'r') do |f|      
  send_data f.read, filename: 'my_file.docx' , type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', disposition: 'attachment'
end
File.delete(file)

しかし

filename: 'my_file.docx'

私の一日を救う

于 2021-03-25T17:01:46.370 に答える