При чтении комментариев звучит так, будто вы идете в направлении использования сокетов напрямую. Не делай этого. Используйте клиентскую библиотеку HTTP. Базовый протокол HTTP достаточно прост, так что подход с сокетами работает для элементарного клиента, но вы не будете поддерживать такие функции, как keepalive HTTP, прокси-серверы, шифрование (https), HTTP / 1.1, сжатие, кодирование по частям или 100 без полностью заново изобретая колесо.
Используйте libcURL . При записи на C загрузка файла на HTTP-сервер занимает всего несколько десятков строк кода , включая шаблон.