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!
updated_item = find_existing_item(update_request, table_name)
                if not updated_item:
                    return
                new_record = clone(record)
                new_record['eventName'] = 'MODIFY'
                new_record['dynamodb']['Keys'] = keys
                new_record['dynamodb']['OldImage'] = self._thread_local('existing_items')[i]
                new_record['dynamodb']['NewImage'] = updated_item
                new_record['eventSourceARN'] = aws_stack.dynamodb_table_arn(table_name)
                records.append(new_record)
            delete_request = request.get('Delete')
            if delete_request:
                table_name = delete_request['TableName']
                keys = delete_request['Key']
                if isinstance(keys, Response):
                    return keys
                new_record = clone(record)
                new_record['eventName'] = 'REMOVE'
                new_record['dynamodb']['Keys'] = keys
                new_record['dynamodb']['OldImage'] = self._thread_local('existing_items')[i]
                new_record['eventSourceARN'] = aws_stack.dynamodb_table_arn(table_name)
                records.append(new_record)
        return records
    def _thread_local(self, name, default=None):
        try:
            return getattr(ProxyListenerDynamoDB.thread_local, name)
        except AttributeError:
            return default
UPDATE_DYNAMODB = ProxyListenerDynamoDB()
def find_existing_item(put_item, table_name=None):