За последние 24 часа нас посетили 17611 программистов и 1593 робота. Сейчас ищут 1413 программистов ...

Залить изображение через cURL

Тема в разделе "Прочие вопросы по PHP", создана пользователем KYIVSTAR, 2 июн 2012.

  1. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    Форма загрузки на странице такова:
    Код (Text):
    1. <form enctype="multipart/form-data" method="POST"><input type="hidden" name="MAX_FILE_SIZE" value="204800" />
    2. <input type="hidden" name="type" value="group_avatar_image" /><input type="hidden" name="gId" value="103582791431794047" /><input type="hidden" name="doSub" value="1" />
    3. <input type="file" name="avatar" size="16" /><input id="submitBTN" input type="submit" value="Upload" /></form>
    Через PHP делаю так
    Код (Text):
    1. $data = array(  
    2. 'name' => 'avatar',  
    3. 'file' => 'd:\xampp\htdocs\bb\2.png'  
    4. );
    5. curl_setopt ($curl, CURLOPT_POSTFIELDS, $data);
    Но не работает. Что делаю не так? Зарние спасибо!
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А где action или урл куда отправляется?
     
  3. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    Это просто часть кода
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну раз урл есть, тогда поставь @

    'file' => '@d:\xampp\htdocs\bb\2.png'
     
  5. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    Поставил - всёравно не меняется! Может нужно не 'name' и 'file', а что-то другое?

    Код (Text):
    1. curl_setopt($curl,CURLOPT_URL,'http://steamcommunity.com/actions/FileUploader?type=group_avatar_image&gId=103582791431794047&bgColor=262627');
    2. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    3. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    4. curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
    5. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
    6. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    7. curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    8. curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);
    9. curl_setopt($curl,CURLOPT_POST,TRUE);
    10. $data = array(  
    11. 'name' => 'avatar',  
    12. 'file' => '@d:\xampp\htdocs\steam\2.png'  
    13. );
    14. curl_setopt ($curl, CURLOPT_POSTFIELDS, $data);
    15. $html = curl_exec($curl);
    16. echo $html;
    Авторизация на сайте проходит успешно, тоесть проблема где-то здесь
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А какая ошибка? $_FILES пустой?

    Попробуй закомментировать по порядку curl_setopt(...)

    Посмотри когда начнет работать...

    Это правильно, менять не надо.
     
  7. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    Он просто выводит страничку, куда картинка должна заливаться, но в исходном коде нет яваскрипта, который должен появляться в случае удачной попытки. Тоесть ошибка где-то в этом массиви... Щас попробую закомментировать некоторые.

    Добавлено спустя 11 минут 4 секунды:
    Сделал в корне у себя файл upload.php
    Код (Text):
    1. <?php
    2. print_r($_FILES);
    3. ?>
    Запрос
    Код (Text):
    1. curl_setopt($curl,CURLOPT_URL,'http://localhost:8080/steam/upload.php');
    2. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    3. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    4. curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
    5. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
    6. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    7. curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    8. curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);
    9. curl_setopt($curl,CURLOPT_POST,TRUE);
    10. $data = array('name' => 'avatar', 'file' => '@d:\xampp\htdocs\steam\2.png');
    11. curl_setopt ($curl, CURLOPT_POSTFIELDS, $data);
    12. $html = curl_exec($curl);
    13. echo $html;
    Ответ
    Код (Text):
    1. Array ( [file] => Array ( [name] => 2.png [type] => application/octet-stream [tmp_name] => D:\xampp\tmp\php8530.tmp [error] => 0 [size] => 1194 ) )
    Тоесть всё работает? Ошибка в чём-то другом?
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну раз тебе выводиться массив $_FILES значить локально точно работает.

    попробуй еще воспользоваться curl_error()
     
  9. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    curl_error() не показует мне никакой ошибки. в массив добавил 'doSub' => '1' начало в ответ писать 'Missing image from upload. Try again!'

    Добавлено спустя 17 минут 31 секунду:
    Посмотрел через HttpFox post-запрос браузера

    Код (Text):
    1. -----------------------------41184676334
    2. Content-Disposition: form-data; name="MAX_FILE_SIZE"
    3.  
    4. 204800
    5. -----------------------------41184676334
    6. Content-Disposition: form-data; name="type"
    7.  
    8. group_avatar_image
    9. -----------------------------41184676334
    10. Content-Disposition: form-data; name="gId"
    11.  
    12. 103582791431794047
    13. -----------------------------41184676334
    14. Content-Disposition: form-data; name="doSub"
    15.  
    16. 1
    17. -----------------------------41184676334
    18. Content-Disposition: form-data; name="avatar"; filename="2.png"
    19. Content-Type: image/png
    20. {код png}
    21. -----------------------------41184676334--
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Попробуй посмотреть через HttpFox запрос через форму, в чем различие?
     
  11. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    это и есть запрос через форму
     
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Я имел ввиду проверить данные HttpFox и curl запроса.

    В curl ты передаешь все хидн поля?
     
  13. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    $data = array('MAX_FILE_SIZE' => '204800', 'type' => 'group_avatar_image', 'gId' => '103582791431794047', 'doSub' => '1', 'name' => 'avatar', 'file' => '@d:\xampp\htdocs\steam\2.png');
     
  14. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    Всё сделал. Спасибо за помощь!
     
  15. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Может поделишся в чем была проблема?
    А то вроде все было правильно...
     
  16. KYIVSTAR

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

    С нами с:
    9 май 2012
    Сообщения:
    12
    Симпатии:
    0
    $data = array('MAX_FILE_SIZE' => '204800', 'type' => 'group_avatar_image', 'gId' => '103582791431005288', 'doSub' => '1', 'avatar' => "@".$_SERVER['DOCUMENT_ROOT'].'/steam/avatar.png');