[LRUG] Rails: using send_file to send video to the browser

Tom Taylor tom at tomtaylor.co.uk
Wed Aug 5 06:22:22 PDT 2015


In the past, when I've used send_file, it's been in front of Apache or nginx, both of which watch for an X-Sendfile header from the application server and use that file path to deliver the file directly to the user, without the app server needing to be involved in shipping the actual bytes.

http://wiki.nginx.org/XSendfile

If you do this, you can probably expect any range requests to work, as Apache or nginx would be handling them.

On Wed, 5 Aug 2015, at 14:12, Tom Armitage wrote:
> I'm working on a project that displays HTML5 video in the browser, and
> access to those videos is controlled.
> 
> Previously, I was using an expiring S3 URL; now I'm hosting the video
> myself, attached via Paperclip. The uploads directory is outside the
> /public directory of the Rails app; there's a URL for the video that, when
> a user hits it, checks if they're authorised to view it, and if so, uses
> send_file to send it to them.
> 
> This no longer works very well now that I'm using send_file - I *think* this
> comes down to the fact the browser requests video with Range headers,
> getting it in chunks, and my poor back-end clearly isn't doing something
> sophisticiated enough.
> 
> My initial thoughts were:
> 
> * something like [
> http://stackoverflow.com/questions/6759426/rails-media-file-stream-accept-byte-range-request-through-send-data-or-send-file],
> which odes the chunking manually but is beginning to make me feel stupid,
> and also feels fragile
> * is Puma the issue, and would a better web server for development work?
> 
> I'm asking because whilst I think I've found the right track, some of you
> might have had experience of this before.
> 
> t.
> 
> -- 
> Tom Armitage
> http://infovore.org
> 07813 060578
> _______________________________________________
> Chat mailing list
> Chat at lists.lrug.org
> Archives: http://lists.lrug.org/pipermail/chat-lrug.org
> Manage your subscription: http://lists.lrug.org/options.cgi/chat-lrug.org
> List info: http://lists.lrug.org/listinfo.cgi/chat-lrug.org



More information about the Chat mailing list