Аплоад файла. php + curl

schweppes

Новичок
Аплоад файла. php + curl

Здравствуйте!
Возникла проблема в аплоаде файла (картинка jpeg). Я залогиниваюсь на
сайте с помощью курла, сохраняю куки, затем хочу отправить картинку,
которая лежит в текущей директории (image.jpg). С помощью браузера та
же картинка под тем же пользователем загружается нормально. Все хедеры
перехвачены с помощью live http headers для firefox и отправляются
курлом (включая реферер и куки, как я уже сказал). Файл аттачу так,
как написано в мануале, я так понял, курл сам добавит все нужные
заголовки касательно content-length, multipart-encoding:

PHP:
                $this->loginAs($username,$password,true);

                $this->_url = "http://host/add_photos.php?u";
                $post_data['userfile'] = "@image.jpg";

                $this->_headers[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows
NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3";
                $this->_headers[] = "Accept: text/xml,application/xml,application/
xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
                $this->_headers[] = "Accept-Language: en-us,en;q=0.5";
                $this->_headers[] = "Accept-Encoding: gzip,deflate";
                $this->_headers[] = "Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7";
                $this->_headers[] = "Keep-Alive: 300";
                $this->_headers[] = "Connection: keep-alive";
                $this->_headers[] = "Referer: http://host/add_photos.php";
                $this->_headers[] = "Cookie: ".$this->_cookies;

                $this->_ch = curl_init($this->_url);
                curl_setopt($this->_ch,CURLOPT_RETURNTRANSFER,1);
                curl_setopt($this->_ch,CURLOPT_HTTPHEADER,$this->_headers);
                curl_setopt($this->_ch,CURLOPT_POST,1);
                curl_setopt($this->_ch,CURLOPT_HEADER,1);
                curl_setopt($this->_ch,CURLOPT_FOLLOWLOCATION,1);
                curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $post_data);

                $content = curl_exec($this->_ch);
                                if(curl_errno($this->_ch))
                                        var_dump(curl_error($this->_ch));
                                else
                                        var_dump($content);

                curl_close($this->_ch);
В результате с @ перед именем файла, выдает curl_error "failed
creating formpost data" , без @ долго думает и HTTP/1.1 413 Request
Entity Too Large . Файл занимает немного больше 19 кб, max_file_size =
512000 байт. Где ошибка в реализации аплоада? Заранее спасибо.
Apache/2.0.52 (Win32) PHP/5.2.1
 

schweppes

Новичок
попробовал с абсолютным путем, не помогло, мне кажется ошибка в невено выставленных опциях курла, может там особые надо для аплоада, CURLOPT_UPLOAD тоже не помогает
 

Anarki

Новичок
То есть не помогло? ошибки были или просто не закачивает?
print_r($_FILES); в скрипте галлереи или чего там это раз

Были ли переданы остальные данные формы? может быть то, что галлеряя не была готова на прием данных(файла), т.к. не было прислано какое-то поле или допустим submit тот же.

>>может там особые надо для аплоада
не надо, достаточно тех , что и для POST

Вот пример который работает
PHP:
<?php
$ch = curl_init('http://localhost/upload/album.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('doUpload'=>1,'file'=>'@C:/www/curl-upload/image1.jpg'));
curl_exec($ch);
curl_close($ch);
?>
 
Сверху