send_file stuur net 'n leë lêer
-
27-09-2019 - |
Vra
Im op soek na 'n manier om 'n XML-lêer af te laai. Ek gebruik:
file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"
maar dit afgelaai my altyd 'n leë lêer. Die lêer self het 16 KB van data in dit ...
hoekom is dit?
Maechi
Oplossing 2
Probleem gered, maar ek weet nie hoekom
File.open(file_path, 'r') do |f|
send_data f.read, :type => "text/xml", :filename => "10.xml"
end
send_data werk ... maar send_file nie!
Ander wenke
waarskynlik jy om kommentaar te lewer uit
config.action_dispatch.x_sendfile_header = "X-Sendfile"
in production.rb
http: // vijaydev. wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ vir verduidelikings
As Eugene sê in sy antwoord, in 'n produksie sal omgewing Rails Apache laat of nginx die werklike lêer stuur vir julle met x-sendfile, as jy nie een van hierdie gebruik as die infrastruktuur vir relings jy om kommentaar te lewer uit die lyn in die
voorgestelconfig / omgewings / production.rb lêer.
# config.action_dispatch.x_sendfile_header = "X-Sendfile"
Jy moet sendfile gebruik in ./config/environments/production.rb
in staat stel:
config.action_dispatch.x_sendfile_header = "X-Sendfile"
As hierdie lyn is nie teenwoordig (of kommentaar uit), dan Rails sal korrek stuur die lêer, maar nie deur Apache.
As jy kry 0-byte lêers, maak dan seker dat jy mod_xsendfile
, wat beskikbaar is vanaf https geïnstalleer: // tn123.org/mod_xsendfile
Laai die enkele bron lêer (mod_xsendfile.c
) en stel dit (apxs -cia mod_xsendfile.c
). Jy wil seker te apxs
as root loop sodat dit korrek sal opgestel alles.
Toe jy gaan wil die XSendFile
en XSendFilePath
opsies in jou Apache konfigurasielêers te stel. Sien die hulp by die bogenoemde URL vir meer inligting.