Fortsetzen der Datei-Downloads in Ruby on Rails
-
30-09-2019 - |
Frage
Schließlich fand heraus, wie dies zu erreichen!
heraus, dass es eingeschaltet ist so einfach wie xsendfile Aktivierung und Einstellung Header-Parameter Accept-Bereich
Lesen Sie meine Antwort unten
(übrigens im Block Zitat unten Ich schrieb einen gemeinsamen pitfall Neulinge - wie habe ich -. Gemacht Wir neigen dazu, es zu denken, sollte manuell programmiert werden)
URL muss, wie etwas sein: mysite.com/get_file?file_point=100 -> dies wird von Byte 100
lesen
- Nehmen Sie den Offset vom Parameter (file_point Parameter in unserem Beispiel)
- Finden Sie heraus, Größe der Datei (File.size)
- Lesen Sie die Datei von Offset Länge (Equivalent von fseek in PHP)
- Senden Sie die Datei mit send_file
Ich weiß nicht, wie der Schritt # 3 in Ruby zu tun in den obigen Schritten.
Lösung
Dies war, wie ich es tat:
response.header["Accept-Ranges"] = "bytes"
send_file product.pack.path, :type => product.pack_content_type, :x_sendfile=>true
ich unseren Server Typen mod_xsendfile einzurichten gefragt, ich weiß nicht, wie es selbst zu setzen.
Tutorial hier: http: / /www.devsource.com/c/a/Techniques/Resumable-File-Downloads-with-ASPNet/2/
Lesen Sie mehr über Content-Length hier: http: // www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
Über Streaming finden Sie hier: http://api.rubyonrails.org/classes /ActionController/Streaming.html