Download large files from an external server with permissions
I have a rails application that requires file downloading. To download the files, permission is required - in this case only a logged in user can download the files. Currently, this is working as the files are on within the applications public folder. The problem is that some files are massive, and when being downloaded in turn kill the application until the download is complete.
It would be nice to separate the file from the application to prevent this (even better to host the files on a different server) but keeping the required permissions/authentication.
Is this possible? has anyone experienced this and have some adice?
Thanks!!!
Hi Jon, I'd try using an s3 bucket on AWS with either the carrierwave gem or paperclip gem and then secure the s3 bucket to only allow authenticated users to access it. Here are a couple of links that might help:
- https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Secure-uploaded-file-in-S3-and-make-it-only-accessible-by-supplying-secret-token%3F
- https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3
If the file download speed is going to hurt your app, perhaps moving it off into a background job with something like Sidekiq would be the answer. I've never used Sidkiq for this but I'd imagine its possible.
Lastly, why are the files so large to begin with? Do they have to be? If not, then perhaps upon ingestion of the files you resize them to something a little more "web friendly" to speed up download times in the future.