### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I'm implementing the second example, using the transferManager described here:

https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_UploadStream_section.html

```
        Long sizeOnS3;
        var key = dataSource.getObjectKey();

        S3TransferManager transferManager = S3TransferManager.builder()
                .s3Client(s3AsyncClient)
                .build();

        BlockingInputStreamAsyncRequestBody body =
                AsyncRequestBody.forBlockingInputStream(null);

        Upload upload = transferManager.upload(builder -> builder
                .requestBody(body)
                .putObjectRequest(req -> req.bucket(bucketName).key(key))
                .build());

        body.writeInputStream(dataSource.getDataStream());

        try {
            upload.completionFuture().get();
            sizeOnS3 = s3Client.headObject(b -> b.bucket(bucketName).key(dataSource.getObjectKey())).contentLength();
        } catch (Exception e) {
            log.error("Error while uploading file to S3", e);
            throw new RuntimeException(e);
        } finally {
            IOUtils.closeQuietly(dataSource.getDataStream());
        }
```

with the S3AsyncClient configure as such:

```
    @Bean
    public S3AsyncClient amazonAsyncS3Client(final Region region,
                                        final AwsCredentialsProvider awsCredentialsProvider,
                                        @Value("${application.aws.s3.uri}") final String maybeS3Uri) throws
            URISyntaxException {

        var s3ClientBuilder = S3AsyncClient.crtBuilder()
                .forcePathStyle(true)
                .region(region)
                .credentialsProvider(awsCredentialsProvider);

        if (StringUtils.isNotBlank(maybeS3Uri)) {
            s3ClientBuilder.endpointOverride(new URI(maybeS3Uri));
        }

        return s3ClientBuilder.build();
    }
```

The upload is successful but some extra data seems to be added before and after the original content:

original content (csv fetched from an API):

`MyData`

Content that I get if I fetch it again:

```
503
MyData

0
x-amz-checksum-crc32:e4f9zQ==
```

Deploying on AWS this extra content doesn't appear so it is my assumption that it is coming from localstack

### Expected Behavior

No extra information is added to the S3 file content other than the original data

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

docker-compose

  localstack:
    image: localstack/localstack:3.0.2
    ports:
      - "4566:4566" # Default port forward
    healthcheck:
      test: [ "CMD", "awslocal", "s3api", "wait", "bucket-exists", "--bucket", "stored-files" ]
      interval: 10s
      timeout: 5s
      retries: 20
    environment:
      - SERVICES=s3,sts
      - DEBUG=1
      - LAMBDA_REMOTE_DOCKER=0
      - DATA_DIR=/tmp/localstack/data
      - DEFAULT_REGION=eu-west-1
    volumes:
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
      - '/var/run/docker.sock:/var/run/docker.sock'
      - "./data/localstack/init.sh:/etc/localstack/init/ready.d/init.sh"


### Environment

```markdown
- OS:macOs 14.1.2
- LocalStack: 3.0.2
```


### Anything else?

_No response_
"""
        When using async-type , it's possible to cancel them inflight. This will make the request body
        incomplete, and will fail during the stream decoding. We can simulate this with body by passing an incomplete
        body, which triggers the same kind of exception.
        This test is to avoid regression for https://github.com/localstack/localstack/issues/9851
        """
        body = "Hello Blob"
        precalculated_etag = hashlib.md5(body.encode()).hexdigest()
        headers = {
            "Authorization": mock_aws_request_headers(
                "s3", aws_access_key_id=TEST_AWS_ACCESS_KEY_ID, region_name=TEST_AWS_REGION_NAME
            )["Authorization"],
            "Content-Type": "audio/mpeg",
            "X-Amz-Content-Sha256": "STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER",
            "X-Amz-Date": "20190918T051509Z",
            "X-Amz-Decoded-Content-Length": str(len(body)),
            "Content-Encoding": "aws-chunked",
        }
        key_name = "test-multipart-chunked"
        response = aws_client.s3.create_multipart_upload(
            Bucket=s3_bucket,
            Key=key_name,