### 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 sending a Pu request to S3 with a very raw request not having any indication that the request is
        directed to S3 (no signing, no specific S3 endpoint) and encoded as a form, the request will go through the
        ServiceNameParser handler.
        This parser will try to parse the form data (which in our case is binary data), and will fail with a decoding
        error. It also consumes the stream, and leaves S3 with no data to save.
        This test verifies that this scenario works by skipping the service name thanks to the early S3 CORS handler.
        """
        default_endpoint = f"http://{get_localstack_host().host_and_port()}"
        _key = "test-routing-key"
        key_url = f"{default_endpoint}/{s3_bucket}/{_key}"
        data = os.urandom(445529)
        resp = .put(
            key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert resp.ok
        get_ = aws_client.s3.get_(Bucket=s3_bucket, Key=_key)
        assert get_["Body"].read() == data
        fake_key_url = f"{default_endpoint}/fake-bucket-{short_uid()}/{_key}"
        resp = .put(
            fake_key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert b"NoSuchBucket" in resp.content
class TestS3MultiAccounts:
    @pytest.fixture
    def primary_client(self, aws_client):