Question: I'd like to get the following layout:

```
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]

```

where each `[ ]` should be at most 300x150px, but scale down to the
bounding box as needed, conserving aspect ratio.

```
.field {
    width: 16%;
}

.field .placeholder{
    float: left;
    width: 300px;
    height: 150px;
}

```

I tried adding a placeholder div inside the divs, but that didn't
really help, it gives me something akin to

```
[ ]
[ ]
[ ]
...

```

Answer: 
**YES**, it is possible in AWS PHP SDK v3.

```
$client = new S3Client(/* config */);

$result = $client->putObject([
    'Bucket'     => 'bucket-name',
    'Key'        => 'bucket-name/file.ext',
    'SourceFile' => 'local-file.ext',
    'ContentType' => 'application/pdf',
    'params' => [
            '@http' => [
                'progress' => function ($downloadTotalSize, $downloadSizeSoFar, $uploadTotalSize, $uploadSizeSoFar) {
                    printf(
                        "%s of %s downloaded, %s of %s uploaded.\n",
                        $downloadSizeSoFar,
                        $downloadTotalSize,
                        $uploadSizeSoFar,
                        $uploadTotalSize
                    );
                }
            ]
    ]
]);

```

This is explained in the AWS docs - [S3 Config section](https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html#progress). It works by exposing GuzzleHttp's `progress` property-callable, as explained in [this SO answer](https://stackoverflow.com/a/34923682/1325575).
AWS PHP SDK has a code example where they show upload progress while uploading to S3. I am not sure if its valid for small files but for streaming it sure works. 

You can check more out at - <http://aws.amazon.com/sdkforphp/>

In a way if they are showing progress - we surely can get that in the form of a progress bar with the help of a Javascript framework like jquery etc.

I shall be working on it very soon and will surely post a tutorial. Cheers!