How to upload to S3 with Pause/Resume support?

That one is a big one. I have been looking for a clean answer for that for a very long time. I even built somethings but it always comes down to using a medium for your application. I think the best solution I have found is using this. It really is a very simple idea and the great part is it only uses a small amount of flash to use.

S3 Heroku Flash Uploader

Github Source Code

However the down side is your not going to be able to upload anything successfully that is over 512 MB there is some sort of cashing fall out after that point. Loose track or something. I think the only other solution that I can think of is to build a Java Application that would handling the uploading to the server. At least then you have a more stable connection and don't have to worry about the problems with the browser.


You should build it using the multipart upload API. Here's the link for Java:

http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/mpListPartsJavaAPI.html

The idea would be to initiate a multi-part upload, start uploading parts (whose size would be based on the client's transfer rate) and whenever the user pauses the upload, stop uploading parts. You won't have byte by byte pause granularity, but I suspect the user would not notice that.


I implemented the following app. Github Link:

https://github.com/interpegasus/condo_example

It is based on the sample app and gem from:

http://cotag.github.com/Condominios/

All credit to https://github.com/cotag/ for a great gem and work.

FEATURES:

  • Pause / Resume support ~ 5MB chunks
  • Large File Upload
  • Progress Bar
  • No Java Applet / No Flash
  • Registration system via devise