<?php
/*
*Upload файла на удаленный сервер через socket
*автор: nc_soft
*28.08.07
*/
//генерация разделителя
$boundary = md5(time());
//отправляем файл (например example.jar )
//имя пересылаемого файла
$file_name = 'example.jar';
//MIME тип пересылаемого файла
$application = 'application/java-archive';
//запись в переменную
$bufer = file_get_contents('./example.jar');
$form_file_name = 'file1'; //это имя у поля формы <input type="file" name="******">
//формируем тело запроса
$post_str = '';
$post_str .= "--$boundary\r\n";
$post_str .= "Content-Disposition: form-data; name=\"$form_file_name\"; filename=\"$file_name\"\r\n";
$post_str .= "Content-Type: $application\r\n";
$post_str .= "Content-Transfer-Encoding: binary\r\n\r\n";
$post_str .= "$bufer\r\n";
$post_str .= "--$boundary--\r\n";
//сайт
$host = 'site.ru';
//обработчик формы
$path = 'handler.php';
//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
die($errstr.':'.$errno);
}
else
{
$header = "POST $path HTTP/1.0\r\n";
$header .= "Host: $host\r\n";
//указываем что это пост данные с вложенным файлом
$header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
$header .= "Content-Length: ".strlen($post_str)."\r\n\r\n";
//посылаем данные
fwrite($fp, $header.$post_str);
$headers='';
//читаем заголовки
while ($str = trim(fgets($fp, 4096)))
$headers .= "$str\n";
$body='';
//читаем ответ
while (!feof($fp))
$body.= fgets($fp, 4096);
//закрываем сокет
fclose($fp);
}
//выводим данные
echo $headers.'<hr/>'.$body;
?>