За последние 24 часа нас посетили 22303 программиста и 1034 робота. Сейчас ищут 776 программистов ...

cURL и загрузка файлов

Тема в разделе "Вопросы от блондинок", создана пользователем krow7, 26 авг 2015.

  1. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    Всем привет,

    Потребовалась загрузка файла с помощью cURL на сервер. По гайдам интернет-бойцов написал в отправителе так:
    Код (PHP):
    1. <?php
    2. $ch = curl_init();
    3. $post_data = array
    4.         (
    5.     'name'  =>  'MyName.txt',
    6.     'file'  =>  '@/var/www/example.txt'
    7.         );
    8. curl_setopt($ch, CURLOPT_POST, true);
    9. curl_setopt($ch, CURLOPT_URL, 'http://192.168.56.101/loader.php');
    10. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    11. curl_exec($ch);
    12. ?>
    А вот код файла-получателя:
    Код (PHP):
    1. <?php
    2. print_r($_FILES);
    3. print_r($_POST);
    4. ?>
    И вот что получаю на выходе:
    Array ( ) Array ( [name] => MyName.txt [file] => @/var/www/vk/cookiejar.txt )

    И никак не могу понять, чего он в файлах не отображается. Может, настройки какие-то проверить? Прилагаю скрин с куском о cURL из phpinfo()
    [​IMG]
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Тип передаваемой формы надо чтото там мультипарт форм дата
     
  3. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    Добавил еще
    Код (Text):
    1. <?php
    2. $f = fopen('out.txt', 'w');
    3. curl_setopt($ch, CURLOPT_STDERR, $f);
    4. curl_setopt($ch, CURLOPT_VERBOSE, true);
    5. ?>
    а там мультипарт есть:
    Добавлено спустя 15 минут 20 секунд:
    Оказалось, что имею установленной версию php 5.6.*, и теперь файлы нужно отправлять по-модному:
    Код (PHP):
    1. <?php
    2. $ch = curl_init();
    3. $file = new CURLFile('/path/to/my/shitty/file');
    4. $post_data = array
    5.         (
    6.     'name'  =>  'MyName.txt',
    7.     'file'  =>  $file
    8.         );
    9. curl_setopt($ch, CURLOPT_POST, true);
    10. curl_setopt($ch, CURLOPT_URL, 'http://192.168.56.101/vk/loader.php');
    11. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    12. curl_exec($ch);
    13. ?>
    Но по-моему, можно установить еще какую-то CURLOPT_* директиву, чтобы можно было постаринке с собачкой шпарить, я не разобрался.