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!
fix_headers_for_updated_response(response)
            return response
        elif action == '%s.TagResource' % ACTION_PREFIX or action == '%s.UntagResource' % ACTION_PREFIX:
            response = Response()
            response.status_code = 200
            response._content = ''  
            fix_headers_for_updated_response(response)
            return response
        elif action == '%s.ListTagsOfResource' % ACTION_PREFIX:
            response = Response()
            response.status_code = 200
            response._content = json.dumps({'Tags': []})  
            fix_headers_for_updated_response(response)
            return response
        return True
    def return_response(self, method, path, data, headers, response):
        if path.startswith('/shell'):
            return
        data = json.loads(to_str(data))
        
        if data and 'TableName' in data and 'KeySchema' in data:
            TABLE_DEFINITIONS[data['TableName']] = data
        if response._content:
            
            content_replaced = re.sub(r'("TableArn"|"LatestStreamArn"|"StreamArn")\s*:\s*"arn:aws:dynamodb:' +
            'ddblocal:([^"]+)"', r'\1: "arn:aws:dynamodb:%s:\2"' % aws_stack.get_region(),
            to_str(response._content))
            if content_replaced != response._content:
                response._content = content_replaced
                fix_headers_for_updated_response(response)