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

Was dit nuttig?

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

voorgestel
  

config / 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.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top