The form POST operation to S3 accepts a `success_action_status` field which can be set to 200/201/204, see [here](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). Localstack currently handles the `success_action_redirect` field [here](https://github.com/localstack/localstack/blob/master/localstack/services/s3/s3_listener.py#L518) and so we should look into handling the `success_action_status` field too.

The 201 from AWS responds with an XML document with some fields about the object that has just been created in AWS, see below.

```
<PostResponse>
    <Location>https://s3.amazonaws.com/link-to-the-file</Location>
    <Bucket>s3-bucket</Bucket>
    <Key>development/8614bd40-691b-4668-9241-3b342c6cf429/image.jpg</Key>
    <ETag>"32-bit-tag"</ETag>
</PostResponse>
```
import cgi
import email.parser
from localstack.utils.common import to_bytes
def _iter_multipart_parts(some_bytes, boundary):
    """ Generate a stream of dicts and bytes for each message part.
        Content-Disposition is used as a header for a multipart body:
        https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
    """
    try:
        parse_data = email.parser.BytesHeaderParser().parsebytes
    except AttributeError:
        
        parse_data = email.parser.HeaderParser().parsestr
    while True:
        try:
            part, some_bytes = some_bytes.split(boundary, 1)
        except ValueError:
            
            break
        if b'\r\n\r\n' not in part:
            
            continue
        part_head, _ = part.split(b'\r\n\r\n', 1)
        head_parsed = parse_data(part_head.lstrip(b'\r\n'))
        if 'Content-Disposition' in head_parsed:
            _, params = cgi.parse_header(head_parsed['Content-Disposition'])
            yield params, part
def expand_multipart_filename(data, headers):