In the aws-sdk\'s S3 class, what is the difference between upload() and putObject()? They seem to do the same thing. Why might I prefer one over the other?
upload() allows you to control how your object is uploaded. For example you can define concurrency and part size.
From their docs: Uploads an arbitrarily sized buffer, blob, or stream, using intelligent concurrent handling of parts if the payload is large enough.
One specific benefit I've discovered is that upload() will accept a stream without a content length defined whereas putObject() does not.
This was useful as I had an API endpoint that allowed users to upload a file. The framework delivered the file to my controller in the form of a readable stream without a content length. Instead of having to measure the file size, all I had to do was pass it straight through to the upload() call.