CURLOPT_POSTFIELDS Todos los datos para enviar vía HTTP "POST". para enviar un fichero, prefija el nombre del fichero con @ y utiliza la ruta completa. Se puede enviar una cadena urlencoded como 'para1=val1¶2=val2&...' o también como un array con el nombre del campo como key y los datos como value. Si el value es un array, el header Content-Type será establecido a multipart/form-data.
Ejemplo
<?php
/*
http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/
$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>