Приветствую всех форумчан и очень надеюсь на помощь!!! Сделал загрузчик файла на удалённый хост. На сокетах всё работает прекрасно. Решил переделать на курл и тут не получается. Вот примерный код: PHP: <?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: <?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: $file = "testfile.txt"; $c = curl_init(); curl_setopt($c, CURLOPT_URL, "http://example.com/putscript"); curl_setopt($c, CURLOPT_USERPWD, "username:password"); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_PUT, true); curl_setopt($c, CURLOPT_INFILESIZE, filesize($file)); $fp = fopen($file, "r"); curl_setopt($c, CURLOPT_INFILE, $fp); curl_exec($c); curl_close($c); fclose($fp);
Спасибо. с этим более менее разобрался, а как в заголовками быть? Не пойму как быть с двойными переносами. И ещё вопрос: как быть с Curlopt_infile если я передаю файл через форму (т.е. я не сохраняю его на серве, всё делается через $_files). сорри за ламерство, с курлом впервые столкнулся =))