Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача файла через cURL постом... 
:(
    Опции темы
Joes
Дата 11.8.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



на сайте blabla.com есть форма для аплоада файла:
Код

<form action="bla-bla-bla" method="post" ENCTYPE="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="Go" name="go" />
<input type=hidden name="val" value="1" />
</form>


мне нужно закачать файл, но через форму на своем сайте. Причем action должен быть не их (bla-bla-bla), а мой, т.к. мне не нужно, чтобы после закачки файла открывалась страница их сайта с результатами закачки. Поэтому cURLом буду вытаскивать результаты.
Проблема же в том, как пердать файл к ним на сервак. 
Делаю так:
сначала закачиваю файл к себе:
Код

$path = "/home/server/public_html/tmp/";
chmod($path, 0775);
$file = $path.$_FILES['file']['name'];
if (!empty($_FILES['file']['tmp_name'])) $uploaded = move_uploaded_file($_FILES['file']['tmp_name'], $path.$_FILES['file']['name']);
if ($uploaded) echo "Wow!"; else echo "doh!";


Затем пытаюсь передать файл, но нифига не получается:
Код

$str="";
$res = curl_init(); 
curl_setopt($res, CURLOPT_URL, "http://www.kaspersky.ru/scanforvirus");
curl_setopt($res, CURLOPT_HEADER, 0);
curl_setopt($res, CURLOPT_RETURNTRANSFER,1); // return into a variable 
curl_setopt($res, CURLOPT_TIMEOUT, 3); // times out after 4s 
curl_setopt($res, CURLOPT_POST, 1); // set POST method  
curl_setopt($res, CURLOPT_POSTFIELDS, "file=".base64_decode(file_get_contents($file))."&val=1&go={$go}");
print_r(curl_getinfo($res));  
echo "\n\ncURL error number:" .curl_errno($res);  
echo "\n\ncURL error:" . curl_error($res);  

$str = curl_exec($res);
curl_close($res);
//with link to graphic

print_r($str);


но вот здесь у меня сомнения: base64_decode(file_get_contents($file)), по-моему что-то не то..
можно конечно попробовать закачивать через нулевой фрейм, причем экшн давать на их страницу, а там просто ЯваСкриптом вырезать нужную информацию, но хочется добить именно cURLом...
PM MAIL   Вверх
Darhazer
Дата 11.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 2
Всего: 29



Цитата

To make a POST in multipart/form-data mode
this worked for me, the " \n" at the end of the variables was very important on my OS X server.

<?php

$file = "file_to_upload.txt";
$submit_url = "http://www.url_to_upload_to.com/upload_page.php";

$formvars = array("cc"=>"us \n");
$formvars[variable_1] = "bla bla \n";
$formvars[variable_2] = "bla bla \n";
$formvars[variable_3] = "bla bla \n";
$formvars[variable_4] = "bla bla \n";
$formvars[upfile] = "@$file"; // "@" causes cURL to send as file and not string (I believe)

   // init curl handle
   $ch = curl_init($submit_url);
   curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");  //initiates cookie file if needed
   curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");  // Uses cookies from previous session if exist
   curl_setopt($ch, CURLOPT_REFERER, "http://www.last_url_for_referer_logs.com");  //if server needs to think this post came from elsewhere
   curl_setopt($ch, CURLOPT_VERBOSE, 1);
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); // follow redirects recursively
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $formvars);

   // perform post
   echo $pnp_result_page = curl_exec($ch);
   curl_close ($ch);

?>

это с мануале. Там файл закачивають через @имя файла, а не через base64_decode


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Joes
Дата 11.8.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



УРА! РАБОТАЕТ!
PM MAIL   Вверх
Папараццы
Дата 1.11.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ошибка у меня вот токая ...
Форма ввода 
Код

<form enctype="multipart/form-data" action="upload.php" method="post">
 <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
 Отправить этот файл: <input name="userfile" type="file" />
 <input type="submit" value="Отправить" />
</form>

Код PHP для вставки файлов....
Код

 <?php
 var_dump($_FILES);
 var_dump($_POST);
// В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES
// вместо $_FILES.
$uploaddir = 'C:\Server\home\localhost\www\yeni\images';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
print "<pre>";
mkdir($uploadfile);
chmod($uploadfile,0775) ;
  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   print "File is valid, and was successfully uploaded. ";
   print "Here's some more debugging info:\n";
   print_r($_FILES);
} else {
   print "Possible file upload attack!  Here's some debugging info:\n";
   print "Possible file upload attack!  Дополнительная отладочная информация:\n";
}
print "</pre>";


ВЫВОД ТАКОЙ 

Warning:  move_uploaded_file(C:\Server\home\localhost\www\yeni\imagesinsert_resurs_prev.inc) [function.move-uploaded-file]: failed to open stream: Permission denied in z:\home\localhost\www\yeni\upload.php on line 28

Warning:  move_uploaded_file() [function.move-uploaded-file]: Unable to move 'c:\TEMP\php479.tmp' to 'C:\Server\home\localhost\www\yeni\imagesinsert_resurs_prev.inc' in z:\home\localhost\www\yeni\upload.php on line 28

Как permission задать ? 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
Mystery_of_being
Дата 9.11.2006, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Код


        if(isset($_POST["sendfoto"]))
    { 


     $url=rand(100000,999999);
     $dirfoto="data/znak/foto2/".$url;
      
      
    move_uploaded_file($_FILES["foto"]["tmp_name"],$dirfoto.".jpg");
    
    echo "<br>Фотография загружена. Грузите другую!";
}
        
echo "<table height=130 border=0 width=345 cellpadding=5 background='data/inter/addphoto.gif'>
<tr><td valign=bottom>
<br></form>
<form action='' method='POST' enctype='multipart/form-data'>
<table><tr><td>    
Выбор фото:&nbsp;&nbsp;&nbsp; <input type='file' name='foto'></td></tr>
<tr><td>
    Комментарий: <input type='text' name='comment'>
    <br><input type='submit' name='sendfoto' value='Загрузить фото'>
    </form>
    </tr></td></table>
</td></tr></table>";

}    


Этот код я вырвал у себя из скрипта.... Почему бы не грузить так ? 


Суть в том.. что у меня была такая же трабла как у тебя раньше.. я заметил что PHP не хочет грузить файлы когда слеши стоят \ вот так... может кто-то скажет что это не имеет значение.... но выяснилось тупо методом тыка....  если слеши будут стоять так / то вроде дожно работать. Но Автоматом ты их не поставишь. Потому лучше файл грузить из TMP папки.

И гже твоя Line 28 ?

Это сообщение отредактировал(а) Mystery_of_being - 9.11.2006, 02:57
PM MAIL WWW ICQ   Вверх
Папараццы
Дата 23.11.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Я траблу решил уже ...Сам написал код готовый , то что брал как закон подлости не работал... А слеши помоюму от ОС только зависит...В Винде нет разници..Т.К. сервак на Фрюхе я слеши поставил такие /   smile 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.