Загрузка данных


import os, http.client, mimetypes, uuid, ssl

# Данные для входа
HOST = "main.atb.su"
URL = "/api/v1/documents"
TOKEN = "Bearer ТВОЙ_ТОКЕН"
CERT = "gigachat_user.pem"
KEY = "gigachat_user.key"

def upload(file_path):
    name = os.path.basename(file_path)
    mime, _ = mimetypes.guess_type(file_path)
    boundary = uuid.uuid4().hex
    
    # Читаем байты, чтобы "приклеить" их к HTTP-запросу
    with open(file_path, 'rb') as f:
        file_bytes = f.read()

    # Собираем запрос
    body = (f"--{boundary}\r\n"
            f'Content-Disposition: form-data; name="file"; filename="{name}"\r\n'
            f"Content-Type: {mime or 'application/octet-stream'}\r\n\r\n").encode() + \
           file_bytes + f"\r\n--{boundary}--\r\n".encode()

    # Настройка SSL (verify=False + твои серты)
    context = ssl.create_default_context()
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE
    context.load_cert_chain(certfile=CERT, keyfile=KEY)

    conn = http.client.HTTPSConnection(HOST, context=context)
    conn.request("POST", URL, body=body, headers={
        "Authorization": TOKEN,
        "Content-Type": f"multipart/form-data; boundary={boundary}"
    })
    print(f"[{conn.getresponse().status}] {name}")
    conn.close()

# Запускаем по списку из папки
folder = "Ready_To_Upload"
for file in os.listdir(folder):
    upload(os.path.join(folder, file))