Here's a code sample that does a multipart post.
if(isset($mybinarydataname))
{
echo $mybinarydataname;
exit;
}
function PostToHost($host, $path, $dataToSend, $port = 80, $authorization = "")
{
if(!($fp = fsockopen($host, $port)))
{
return "<b>From PostToHost()</b><br><B>Error:</b> Error opening network socket.<br>";
}
set_socket_blocking($fp, TRUE);
fwrite($fp, "POST $path HTTP/1.0\r\n");
if($authorization != "")
{
// $authorization would be base64_encode("username:password"); for posting to password protected directories
fwrite($fp, "Authorization: Basic " . $authorization . "\r\n");
}
$dataToSend = "--BOUNDARY\r\n" .
"Content-Disposition: form-data; name=\"mybinarydataname\"\r\n\r\n" .
$dataToSend .
"\r\n--BOUNDARY--";
fwrite($fp, "Content-Type: multipart/form-data; boundary=BOUNDARY\r\n");
fwrite($fp, "Content-Length: " . strlen($dataToSend) . "\r\n\r\n");
fwrite($fp, $dataToSend);
for($results = ""; !feof($fp); $results .= fread($fp, 10000000));
fclose($fp);
return $results;
}
$filename = "/www/htdocs/apache_pb.gif";
$fp = fopen($filename, "rb");
$binData = fread($fp, filesize($filename));
fclose($fp);
$results = PostToHost($SERVER_NAME, $PHP_SELF, $binData, 80);
echo $results;
// Strip HTTP header
$results = substr($results, strpos($results, "\r\n\r\n") + 4);
if($binData != $results)
echo strlen($binData) . ":" . strlen($results);