Domanda

Im che cerca un modo per scaricare un file xml. Io uso:

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

ma questo mi scarica sempre un file vuoto. Il file stesso ha 16 KB di dati in esso ...

Perché è così?

Maechi

È stato utile?

Soluzione 2

Problema salvato, ma non so il motivo per cui

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

Send_Data funziona ... ma non send_file!

Altri suggerimenti

Probabilmente si deve commentare

config.action_dispatch.x_sendfile_header = "X-Sendfile"

in production.rb

http: // vijaydev. wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ spiegazioni

Come Eugene dice nella sua risposta, in una produzione Rails enviroment lasceranno Apache o nginx inviare il file vero e proprio per voi con x-sendfile, se non utilizzare uno di questi come l'infrastruttura per le rotaie si deve commentare la linea suggerita nella

  

config / ambienti / production.rb file.

# config.action_dispatch.x_sendfile_header = "X-Sendfile"

È necessario abilitare l'utilizzo sendfile in ./config/environments/production.rb:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

Se questa riga non è presente (o commentato), quindi Rails correttamente inviare il file, ma non attraverso Apache.

Se hai trovato i file 0-byte, quindi assicurarsi di aver installato mod_xsendfile, che è disponibile da https: // tn123.org/mod_xsendfile

Scarica il singolo file sorgente (mod_xsendfile.c) e compilarlo (apxs -cia mod_xsendfile.c). Probabilmente si desidera eseguire apxs come root in modo che sarà istituito tutto correttamente.

Poi si sta andando a voler impostare le opzioni XSendFile e XSendFilePath nei file di configurazione di Apache. Vedere l'aiuto all'indirizzo di cui sopra per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top