2011-08-08 11 views
13

Estoy luchando con send_file con los carriles 3.0.9 ejecutan Ruby 1.9, 3.0.8 pasajeros en Apache en Ubuntu lúcido El módulo xsendfile se instala y se carga en ApacheRails 3, Apache y pasajero, send_file envía archivos de cero bytes

root~# a2enmod xsendfile 
Module xsendfile already enabled 

Su enlazado simbólicamente correctamente en mods-enabled

lrwxrwxrwx 1 root root 32 Aug 8 11:20 xsendfile.load -> ../mods-available/xsendfile.load 

config.action_dispatch.x_sendfile_header = "X-Sendfile" se fija en mi production.rb

resultados utilizando send_file en archivos de cero bytes que se envían al navegador

filepath = Rails.root.join('export',"#{filename}.csv") 
if File.exists?(filepath) 
    send_file filepath, :type => 'text/csv' 
end 

Respuesta

11

Creo que la respuesta anterior no es el camino correcto a seguir, ya que, por lo que yo puedo decir, Apache no está manejando las descargas en todo cuando se aplica esta solución, en cambio, el proceso de los rieles sí lo es. Es por eso que parece que la directiva nginx, que no debería funcionar. Obtiene el mismo resultado comentando la directiva config.

Otro inconveniente (aparte de atascar un proceso de raíles durante demasiado tiempo) es que cuando la transmisión de datos es manejada por el proceso de raíles, la respuesta no parece enviar el encabezado de longitud de contenido. Por lo tanto, un usuario no sabe qué tan grande es el archivo que está descargando, ni cuánto tardará (un problema de usabilidad).

que era capaz de conseguir que funcione, asegurando que mod_sendfile fue correctamente incluido y cargado en mi configuración de Apache, al igual que (esto dependerá de su instalación de Apache, etc.):

LoadModule xsendfile_module /usr/lib64/httpd/modules/mod_xsendfile.so 
... 

# enable mod_x_sendfile for offloading zip file downloads from rails 
XSendFile on 
XSendFilePath/
+0

Sean, Creo que podrías estar aquí mismo. Estas opciones de configuración no son predeterminadas para el módulo x_sendfile. – Rob

+0

Parece que el valor predeterminado para XSendFile no está activado, sino desactivado. Vea las posibles opciones de configuración y valores predeterminados aquí: https://tn123.org/mod_xsendfile/ – Cam

Cuestiones relacionadas