function doPut($url,$fields,$file)
{
$fields = (is_array($fields)) ? http_build_query($fields) : $fields;

if($ch = curl_init($url))
{
$fp = fopen($file, "r");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);

print_r (curl_exec($ch));

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$t = curl_close($ch);

return $t;
}
else
{
return false;
}
}

Usando questa funzione dovrei in teoria riuscire ad inviare un file e a passare i parametri richiesti come argomenti "POST"

Il problema è che il webserver non riconosce il primo parametro nell'array fields...

che è

$fields = array(
'action' => 'document.upload',
'apiKey' => $apikey,
'name' => 'racing',
'title'=>'Race Cars',
'signature'=>$str);

a mio avviso potrebbe essere un errore dovuto al fatot che il webservice si aspetta uan codifica di invio con enctype

<form action="mio_server.php" enctype="multipart/form-data" method="post">

la domanda quindi è:
come posso inviare un file tramite curl e passare i parametri con metodo multipart/form-data ?
:master: