Reanudación de descargas de archivos en Ruby on Rails
-
30-09-2019 - |
Pregunta
Finalmente encontró la manera de lograr esto!
Resultó que es tan simple como permitir xsendfile y el establecimiento de parámetro de cabecera Accept-Rango
Lee mi respuesta a continuación
(por cierto, en la cita de bloque a continuación escribí novatos error común - como yo lo hice -. Hice Tendemos a pensar que se debe programar manualmente)
URL debe ser algo como: mysite.com/get_file?file_point=100 -> Esto permitirá la lectura de bytes 100
- Obtener el desplazamiento desde parámetro (parámetro file_point en nuestro ejemplo)
- Para saber el tamaño del archivo (File.size)
- Leer el archivo desde el desplazamiento de longitud (Equivalente de fseek en PHP)
- enviar el archivo con send_file
No sé cómo hacer el paso # 3 en Rubí en los pasos anteriores.
Solución
Así fue como lo hice:
response.header["Accept-Ranges"] = "bytes"
send_file product.pack.path, :type => product.pack_content_type, :x_sendfile=>true
Le pregunté a nuestro tipo de servidor para establecer mod_xsendfile, no sé cómo configurarlo yo mismo.
Tutorial aquí: http: / /www.devsource.com/c/a/Techniques/Resumable-File-Downloads-with-ASPNet/2/
Lea acerca de longitud de contenido aquí: http: // www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
Sobre el streaming está disponible aquí: http://api.rubyonrails.org/classes /ActionController/Streaming.html