Отправить файл в POST-запросе

Чтобы отправить файл в POST-запросе, используют функцию curl_file_create(), которая стала доступна с версии PHP 5.5.0.

// переменные для POST-запроса
$post = [
    'var_name' => 'value',
    'userfile' => curl_file_create('path/file.jpg'),
];

// отправка POST-запроса
$ch = curl_init('http://example.com/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);

Обратится к данному файлу можно через переменную $_FILES.

// загрузка файла
move_uploaded_file($_FILES['userfile']['tmp_name'], 'upload/new-file.jpg');