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: