Pregunta

Estoy buscando una manera de descargar un archivo XML. Yo uso:

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

pero esto siempre me descarga un archivo vacío. El archivo consta de 16 KB de datos en ella ...

¿Por qué?

Maechi

¿Fue útil?

Solución 2

Problema salvó, pero yo no sé por qué

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

send_data está trabajando ... pero no send_file!

Otros consejos

Probablemente hay que comentar

config.action_dispatch.x_sendfile_header = "X-Sendfile"

en production.rb

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

Como Eugene dice en su respuesta, en una producción de rieles de medio ambiente le permitirá Apache o Nginx enviar el archivo real para usted con x-sendfile, si no utilizar cualquiera de estos como la infraestructura de rieles que tiene que comentar la línea se sugiere en el

  

config / ambientes / production.rb archivo.

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

Se debe permitir el uso sendfile en ./config/environments/production.rb:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

Si esta línea no está presente (o comentada), entonces los carriles enviará correctamente el archivo, pero no a través de Apache.

Si usted está recibiendo archivos de 0 bytes, a continuación, asegúrese de que ha instalado mod_xsendfile, que está disponible en https: // tn123.org/mod_xsendfile

Descargar el archivo fuente (mod_xsendfile.c) y compilarlo (apxs -cia mod_xsendfile.c). Es posible que desee ejecutar apxs como root para que se pondrá en marcha todo correctamente.

A continuación, usted va a querer establecer las opciones XSendFile y XSendFilePath en sus archivos de configuración de Apache. Consulte la ayuda en la dirección de arriba para obtener más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top