HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //var/packages/SupportService/var/actions/SupportService/upload-debug-dat/multipart_data_encoder.py
import random
import string
import mimetypes
import typing


def generate_boundary() -> str:
    return ''.join(random.choices(string.ascii_letters + string.digits, k=16))


def encode_multipart_data(fields: dict, files: typing.List[typing.Tuple[str, str]]) -> typing.Tuple[bytes, str]:
    boundary = generate_boundary()
    data = []

    for key, value in fields.items():
        data.append(f'--{boundary}'.encode('utf-8'))
        data.append(f'Content-Disposition: form-data; name="{key}"\r\n'.encode('utf-8'))
        data.append(f'{value}'.encode('utf-8'))

    for field_name, file_path in files:
        file_name = file_path.split('/')[-1]
        file_type, _ = mimetypes.guess_type(file_path)

        with open(file_path, 'rb') as file:
            file_content = file.read()

        data.append(f'--{boundary}'.encode('utf-8'))
        data.append(f'Content-Disposition: form-data; name="{field_name}"; filename="{file_name}"'.encode('utf-8'))
        data.append(f'Content-Type: {file_type}\r\n'.encode('utf-8'))
        data.append(file_content)

    data.append(f'--{boundary}--'.encode('utf-8'))
    data.append(b'')

    body = b'\r\n'.join(data)
    content_type = 'multipart/form-data; boundary={}'.format(boundary)

    return body, content_type