За последние 24 часа нас посетили 16476 программистов и 1642 робота. Сейчас ищут 1103 программиста ...

CURL и передача файлов

Тема в разделе "Прочие вопросы по PHP", создана пользователем Peroon, 9 авг 2006.

  1. Peroon

    Peroon Активный пользователь

    С нами с:
    9 авг 2006
    Сообщения:
    8
    Симпатии:
    0
    Задача - передать файл другому серверу. Так чтобы на том сервере появился массив $_FILES
    Делаю так

    $fp = fopen('1.jpg', "r");
    $url = "http://curl_2/";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize('1.jpg'));

    $result = curl_exec($ch);

    curl_close($ch);

    На том серваке массив файлз пустой. Что я делаю не так?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    curl_setopt($ch, CURLOPT_INFILE, '1.jpg');
     
  3. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    пф... только что смотрел, было несколько ответов... уже нету...
     
  4. Peroon

    Peroon Активный пользователь

    С нами с:
    9 авг 2006
    Сообщения:
    8
    Симпатии:
    0
    Чего-то вообще ничего не происходит. Скрипт где-то затыкается. Беконечно долго курсор - песочные часы.
    Меняю обратно на $fp отрабатывает моментально.
     
  5. Peroon

    Peroon Активный пользователь

    С нами с:
    9 авг 2006
    Сообщения:
    8
    Симпатии:
    0
    Больше нет вариантов? :(
     
  6. Peroon

    Peroon Активный пользователь

    С нами с:
    9 авг 2006
    Сообщения:
    8
    Симпатии:
    0
    О!!! Отработал.
    Warning: curl_setopt(): supplied argument is not a valid File-Handle resource in z:\home\curl_1\www\index.php on line 22
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    надеюсь идея понятна?

    chunk_split делать не обязательно.

    PHP:
    1. <?
    2.  
    3. $fp = file_get_contents('ok.gif');
    4.  
    5. $url = "http://440hz.ru/trash/params/";
    6. $ch = curl_init();
    7.  
    8. $data = 'name='.urlencode('ok.gif');
    9. $data .= '&file='.chunk_split(base64_encode($fp));
    10. $data .= '&size='.filesize('ok.gif');
    11. //$data = 'file=1';
    12.  
    13. curl_setopt($ch, CURLOPT_URL, $url);
    14. curl_setopt($ch, CURLOPT_POST, 1);
    15. //curl_setopt($ch, CURLOPT_INFILE,$fp);
    16. //curl_setopt($ch, CURLOPT_INFILESIZE, filesize('ok.gif'));
    17. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Post Variables
    18. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    19. curl_setopt($ch, CURLOPT_VERBOSE,1);
    20.  
    21. $result = curl_exec($ch);
    22.  
    23. //print_r(curl_getinfo($ch));
    24.  
    25. print($result);
    26.  
    27. curl_close($ch);
    28.  
    29. ?>
    PHP:
    1.  
    2.  
    3. <?
    4.  
    5. # [url=http://440hz.ru/trash/params/]http://440hz.ru/trash/params/[/url]
    6.  
    7. print_r($_POST);
    8.  
    9. ?>
    10.  
    Код (Text):
    1.  
    2. * About to connect() to 440hz.ru port 80
    3. *   Trying 81.3.178.141... * connected
    4. * Connected to 440hz.ru (81.3.178.141) port 80
    5. > POST /trash/params/ HTTP/1.1
    6. Host: 440hz.ru
    7. Accept: */*
    8. Content-Length: 606
    9. Content-Type: application/x-www-form-urlencoded
    10.  
    11. name=ok.gif&file=R0lGODlhMQAVALMAAOfp7f/qARUrTU2yMoeSpP/qAP/rAG16kf7oAP/rAf7qAPzqAP3sAP/qA7S6
    12. xj1OayH5BAAAAAAALAAAAAAxABUAQAT/EJVlqr04631LMkNoeEFplkoTKEwiCEn8uq/gBJVy7l4R
    13. DqPEzmRQBRoFg6KgmxyXukVhJRwGer+gtZRgFJjX3kIaWCSmqZFhixWRrEoPY+54CB6OBOK1QBwE
    14. AFNTVm0/hoeIiYqLilpwCksxX0yTkEkMCFddmYRnWW9DBggNawwOAgcLfw4FfKthOp0+blWEIwoJ
    15. dgAMAHcMLwAENpNbmrNAoDsJUiNfHwWZLAkNUghjCw2cQ4WM3d7fn7U7KV9IlE0LTxMJuF9rsuFb
    16. CsyVI9EtKklT6UbbnrTyvAQQWOeOAwR7BHzRJWGQv2OOQlFaCIiXrxfCCDAgJ+5EoYg7UwykYzDi
    17. RQMdL37duYOARYCOJj4mOxHLwIdTBxisUqmg1wMvYOABJDQwRQyECqyRqYYQ4YJYD+N1UiCSwcuJ
    18. TCItdcbm34CsxcKKDcsNnNmzPyIAADs=
    19. &size=422< HTTP/1.1 200 OK
    20. < Date: Wed, 09 Aug 2006 14:09:16 GMT
    21. < Server: Apache/1.3.31 (Unix) PHP/5.1.2
    22. < X-Powered-By: PHP/5.1.2
    23. < Transfer-Encoding: chunked
    24. < Content-Type: text/html
    25. * Connection #0 to host 440hz.ru left intact
    26. Array
    27. (
    28.     [name] => ok.gif
    29.     [file] => R0lGODlhMQAVALMAAOfp7f/qARUrTU2yMoeSpP/qAP/rAG16kf7oAP/rAf7qAPzqAP3sAP/qA7S6
    30. xj1OayH5BAAAAAAALAAAAAAxABUAQAT/EJVlqr04631LMkNoeEFplkoTKEwiCEn8uq/gBJVy7l4R
    31. DqPEzmRQBRoFg6KgmxyXukVhJRwGer gtZRgFJjX3kIaWCSmqZFhixWRrEoPY 54CB6OBOK1QBwE
    32. AFNTVm0/hoeIiYqLilpwCksxX0yTkEkMCFddmYRnWW9DBggNawwOAgcLfw4FfKthOp0 blWEIwoJ
    33. dgAMAHcMLwAENpNbmrNAoDsJUiNfHwWZLAkNUghjCw2cQ4WM3d7fn7U7KV9IlE0LTxMJuF9rsuFb
    34. CsyVI9EtKklT6UbbnrTyvAQQWOeOAwR7BHzRJWGQv2OOQlFaCIiXrxfCCDAgJ 5EoYg7UwykYzDi
    35. RQMdL37duYOARYCOJj4mOxHLwIdTBxisUqmg1wMvYOABJDQwRQyECqyRqYYQ4YJYD N1UiCSwcuJ
    36. TCItdcbm34CsxcKKDcsNnNmzPyIAADs=
    37.  
    38.     [size] => 422
    39. )
    40. * Closing connection #0
     
  8. Peroon

    Peroon Активный пользователь

    С нами с:
    9 авг 2006
    Сообщения:
    8
    Симпатии:
    0
    Да :)
    Но это откровенно через зад. Должен ведь аплоадить файлы...

    Спасибо, что уделили время :)
     
  9. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    2440hz :)
    А че значит CURL ?
     
  10. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  11. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    лень прочитать....а в практиике многоиспользываимая функция?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    curl аплоадид, но методом PUT.
    PHP юзает или GET или POST. Отсюда и плясать надо.