Upload to S3 directly from the client