Malunga
06.09.2008, 05:00
Приветствую всех форумчан и очень надеюсь на помощь!!! :)
Сделал загрузчик файла на удалённый хост. На сокетах всё работает прекрасно. Решил переделать на курл и тут не получается.
Вот примерный код:
<?php
$head = "POST /upload.php HTTP/1.1\r\n";
$head .= "Content-type: multipart/form-data; boundary=--UPLOAD\r\n";
$head2 .= "-------UPLOAD-------\r\nContent-Disposition: form-data;\r\n\r\n";
$head2 .= "-------UPLOAD-------\r\nContent-Type: image/gif\r\n\r\n";
$head2 .= file_get_contents($filename);
$head2 .= 'Content-Disposition: form-data; name="uploadfile"'."\r\n";
$head2 .= "Submit Query\r\n-------UPLOAD-------\r\n";
$head .= 'Content-length: '.strlen($head2)."\r\n\r\n".$head2;
$fp = fsockopen('host.ru', 30);
while(!feof($fp))
{
echo fputs($fp, $head);
}
fclose($fp);
?>
(часть заголовков опустил)
Как видно, заголовки довольно мудрёные. Напрягают двойные переносы (\r\n\r\n) и длина запроса, которая берётся из первой части.
Вот что пытался сделать, конечно же ничего не работает.
<?php
$head[] = 'Content-type: multipart/form-data; boundary=--UPLOAD';
$head2[] = '-------UPLOAD-------';
$head2[] = 'Content-Disposition: form-data;';
$head2[] = '-------UPLOAD-------';
$head2[] = 'Content-Type: image/gif';
$head2[] = 'Content-Disposition: form-data; name="uploadfile"';
$head2[] = 'Submit Query';
$head2[] = '-------UPLOAD-------';
$head[] = 'Content-length: '.count($head2);
$head[] = $head2;
$init = curl_init();
curl_setopt($init, CURLOPT_URL,'http://host.ru/upload.php');
curl_setopt($init, CURLOPT_RETURNTRANSFER,true);
curl_setopt($init, CURLOPT_HEADER,true);
curl_setopt($init, CURLOPT_POST,true);
curl_setopt($init, CURLOPT_UPLOAD,true);
curl_setopt($init, CURLOPT_POSTFIELDS,$head);
curl_setopt($init, CURLOPT_INFILESIZE,$_FILES["name"]["size"]);
curl_setopt($init, CURLOPT_INFILE, file_get_contents($_FILES["name"]["tmp_name"]));
$string = curl_exec($init);
curl_close($init);
echo "<pre>$string</pre>";
?>
С курлом столкнулся впервые тем более с передачей файлов на курле. так же гуглил и ничего не нашёл интересного по своему вопросу, кроме как простых статей как загрузить файл на удалённый хост....
Надеюсь на вашу помощь!!!
Сделал загрузчик файла на удалённый хост. На сокетах всё работает прекрасно. Решил переделать на курл и тут не получается.
Вот примерный код:
<?php
$head = "POST /upload.php HTTP/1.1\r\n";
$head .= "Content-type: multipart/form-data; boundary=--UPLOAD\r\n";
$head2 .= "-------UPLOAD-------\r\nContent-Disposition: form-data;\r\n\r\n";
$head2 .= "-------UPLOAD-------\r\nContent-Type: image/gif\r\n\r\n";
$head2 .= file_get_contents($filename);
$head2 .= 'Content-Disposition: form-data; name="uploadfile"'."\r\n";
$head2 .= "Submit Query\r\n-------UPLOAD-------\r\n";
$head .= 'Content-length: '.strlen($head2)."\r\n\r\n".$head2;
$fp = fsockopen('host.ru', 30);
while(!feof($fp))
{
echo fputs($fp, $head);
}
fclose($fp);
?>
(часть заголовков опустил)
Как видно, заголовки довольно мудрёные. Напрягают двойные переносы (\r\n\r\n) и длина запроса, которая берётся из первой части.
Вот что пытался сделать, конечно же ничего не работает.
<?php
$head[] = 'Content-type: multipart/form-data; boundary=--UPLOAD';
$head2[] = '-------UPLOAD-------';
$head2[] = 'Content-Disposition: form-data;';
$head2[] = '-------UPLOAD-------';
$head2[] = 'Content-Type: image/gif';
$head2[] = 'Content-Disposition: form-data; name="uploadfile"';
$head2[] = 'Submit Query';
$head2[] = '-------UPLOAD-------';
$head[] = 'Content-length: '.count($head2);
$head[] = $head2;
$init = curl_init();
curl_setopt($init, CURLOPT_URL,'http://host.ru/upload.php');
curl_setopt($init, CURLOPT_RETURNTRANSFER,true);
curl_setopt($init, CURLOPT_HEADER,true);
curl_setopt($init, CURLOPT_POST,true);
curl_setopt($init, CURLOPT_UPLOAD,true);
curl_setopt($init, CURLOPT_POSTFIELDS,$head);
curl_setopt($init, CURLOPT_INFILESIZE,$_FILES["name"]["size"]);
curl_setopt($init, CURLOPT_INFILE, file_get_contents($_FILES["name"]["tmp_name"]));
$string = curl_exec($init);
curl_close($init);
echo "<pre>$string</pre>";
?>
С курлом столкнулся впервые тем более с передачей файлов на курле. так же гуглил и ничего не нашёл интересного по своему вопросу, кроме как простых статей как загрузить файл на удалённый хост....
Надеюсь на вашу помощь!!!