PDA

Просмотр полной версии : Не могу отправить файл POST


Komyak
14.02.2010, 12:26
Не могу понять в чём трабла. Пытаюсь отправить файл с помощью курла, но ничего не получается.
Прохожу авторизацию на сервере, получаю скрытые параметры и пытаюсь отправить файл book.htm :

//name: test.php
......................................//Здесь авторизация

$upload = 'book.htm';
$data = array("token" => $token[1],
"name" => 'bookFile',//
'upload' => "@".$upload,
"visibility" => "openned",
"show" => "1",
"go_save" => "Послать");

$result=post("http://xxx.net/add_up.php",$data,$referer,$ua);
echo $result;

Оригинальная форма отправки выглядит так:

<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="token" value="XXXXXXXXX" />
<input type="file" name="bookFile" size="44" class="text" />
<input name="visibility" value="openned"/>
<input name="show" value="1"/>
<input type="submit" name="go_save" value="Послать" />
</form>

Но ни Х не получается... Подскажите в чём может быть проблема?
Файл book.htm находится рядом со скриптом отправщиком.

Моя post функция:

function post($url,$post,$refer,$ua)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
return $result;

}

m0Hze
14.02.2010, 12:56
"name" => 'bookFile',//
'upload' => "@".$upload,

Wtf?

Komyak
14.02.2010, 13:08
Wtf?
C отправкой файла столкнулся первый раз, поэтому переделывал примеры...
// - комментарий не удалил, но он же не мешает.
"@".$upload - это именно в примере было. Якобы так помечается файл для отправки

m0Hze
14.02.2010, 13:18
http://www.spravkaweb.ru/php/sovet/putfile


array('bookFile' => '@'.$filepath);

Chaak
14.02.2010, 15:11
$postdata = array('name поля upload' => "@".dirname(__file__).$filename);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'страница action');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,300);
$res = curl_exec($ch);
curl_close($ch);

Иногда требуется указать полный путь к отправляемому файлу. (dirname(__file__).'file.exe')