Actual working version with multipart uploading
Actual working version with multipart uploading

Why I didn't use FileChunkIO? That's a very good question. While
FileChunkIO is a damn fine idea, is still relatively new and packages
don't exist for most distributions. Yes, it exists in in pypi but that's
about it. Also, I'm trying to keep the number of non-stdlib components
to a minimum.

Currently this will read chunks into memory (by default, 256M at a time,
but that's in a parameter) and stream them up to S3. IF you are so low
in usable memory such that 256M is not enough, it will use 1/20th of
as much free memory as you have.

Another big change is that the MD5 is calculated before uploading and
stored as key metadata. The reason is that multipart files won't report
the right MD5 in the ETag (this only for multipart uploads):

https://forums.aws.amazon.com/thread.jspa?messageID=203436

JeremyGrosser/tablesnap,curalate/tablesnap,heroku/tablesnap,juiceblender/tablesnap,juiceblender/tablesnap,apigee/tablesnap,amorton/cassback,betable/tablesnap,apigee/tablesnap,tamsky/tablesnap,ethanmiller/tablesnap,betable/tablesnap,JeremyGrosser/tablesnap,russss/tablesnap,russss/tablesnap