Hello guys. I use S3 preSigned URL to upload file, but it return an error "The Content-MD5 you specified was invalid".
It happens only when I generate Presigned Url with contentMd5.However it works fine when I annotation the line '.withContentMd5(md5)'.
My file md5 is 32c295626872e465b3d0b590eb8e88a7.

```java
        AmazonS3 s3client = getDefaultS3Client();
        Date expiration = new Date(System.currentTimeMillis() + expiratMillis);
        GeneratePresignedUrlRequest generatePresignedUrlRequest =
                new GeneratePresignedUrlRequest(bucketName, s3FullPath)
                        .withMethod(HttpMethod.PUT)
                        .withExpiration(expiration)
                        .withKey(s3Key)
                        .withContentMd5(md5);
        String presignedUrl =  s3client.generatePresignedUrl(generatePresignedUrlRequest);
 ```


![postman](https://user-images.githubusercontent.com/4321439/60160341-bdfafd80-9827-11e9-8a26-03ec4c4d8faf.png)

Does S3 support checksum when using presigned url?
Could anybody give me a piece of advice to help me solve this? Thank you!
try:
                ProxyListenerDynamoDB.thread_local.existing_item = find_existing_item(data)
            except Exception as e:
                if 'ResourceNotFoundException' in str(e):
                    return get_table_not_found_error()
                raise
        elif action == '%s.DescribeTable' % ACTION_PREFIX:
            
            table_names = ddb_client.list_tables()['TableNames']
            if to_str(data['TableName']) not in table_names:
                return get_table_not_found_error()
        elif action == '%s.DeleteTable' % ACTION_PREFIX:
            
            table_names = ddb_client.list_tables()['TableNames']
            if to_str(data['TableName']) not in table_names:
                return get_table_not_found_error()
        elif action == '%s.BatchWriteItem' % ACTION_PREFIX:
            existing_items = []
            for table_name in sorted(data['RequestItems'].keys()):
                for request in data['RequestItems'][table_name]:
                    for key in ['PutRequest', 'DeleteRequest']:
                        inner_request = request.get(key)
                        if inner_request:
                            existing_items.append(find_existing_item(inner_request, table_name))
            ProxyListenerDynamoDB.thread_local.existing_items = existing_items
        elif action == '%s.TransactWriteItems' % ACTION_PREFIX:
            existing_items = []
            for item in data['TransactItems']:
                for key in ['Put', 'Update', 'Delete']:
                    inner_item = item.get(key)