upload файла на удаленный сервер через sock
<?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 ;
?>