xml ファイルをダウンロードする方法を探しています。私が使う:
file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"
しかし、これは常に空のファイルをダウンロードします。ファイル自体には 16 KB のデータが含まれています...
何故ですか?
前地
xml ファイルをダウンロードする方法を探しています。私が使う:
file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"
しかし、これは常に空のファイルをダウンロードします。ファイル自体には 16 KB のデータが含まれています...
何故ですか?
前地
おそらくあなたはコメントアウトする必要があります
config.action_dispatch.x_sendfile_header = "X-Sendfile"
production.rbで
説明についてはhttp://vijaydev.wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/を参照してください
問題は保存されましたが、理由がわかりません
File.open(file_path, 'r') do |f|
send_data f.read, :type => "text/xml", :filename => "10.xml"
end
send_data は機能していますが、send_file は機能していません!
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バイトのファイルを取得している場合は、 https://tn123.org/mod_xsendfilemod_xsendfile
から入手できるがインストールされていることを確認してください。
単一のソースファイルをダウンロードして(mod_xsendfile.c
)、コンパイルします(apxs -cia mod_xsendfile.c
)。apxs
すべてが正しくセットアップされるように、rootとして実行することをお勧めします。
次に、Apache構成ファイルでXSendFile
とオプションを設定します。XSendFilePath
詳細については、上記のURLのヘルプを参照してください。
私の場合、同じことが起こりました。ファイルを送信して削除していました。
ここのように
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'
私の一日を救う